Skip to content

Report aggregate statistics for solution as well as some solution perf numbers #49285

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 12 commits into from

Conversation

sheetalkamat
Copy link
Member

@sheetalkamat sheetalkamat commented May 27, 2022

Creating draft for changes i have done to measure build perf for #48784 and others
cc: @amcasey

Sorry i didnt realise that i had not updated description when i marked this ready for review.

This change under --extendedDiagnostics aggregates the diagnostics from all projects built and reports it at the end. Apart from that it also outputs some measurements for work that happens in tsc --build like finding if projects are uptodate etc.

This is how output looks:

c:\temp\TypeScript>node c:\TypeScript\built\local\tsc.js -b --extendedDiagnostics src
Files:                         163
Lines of Library:             8909
Lines of Definitions:        36794
Lines of TypeScript:        153588
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                354987
Symbols:                    202915
Types:                       85095
Instantiations:             139487
Memory used:               569197K
Assignability cache size:    70312
Identity cache size:          2164
Subtype cache size:          13892
Strict subtype cache size:    3468
I/O Read time:               2.79s
Parse time:                  1.84s
ResolveModule time:          0.07s
ResolveTypeReference time:   0.02s
Program time:                4.82s
Bind time:                   0.98s
Check time:                 12.68s
transformTime time:          1.89s
Source Map time:             0.53s
commentTime time:            0.64s
printTime time:              7.79s
Emit time:                   7.79s
I/O Write time:              0.04s
Total time:                 26.28s
Files:                           7
Lines of Library:             5129
Lines of Definitions:        14454
Lines of TypeScript:          1073
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 43442
Symbols:                     26255
Types:                        2268
Instantiations:               1664
Memory used:               596105K
Assignability cache size:      409
Identity cache size:            19
Subtype cache size:             18
Strict subtype cache size:      12
I/O Read time:               0.03s
Parse time:                  0.15s
ResolveModule time:          0.00s
Program time:                0.20s
Bind time:                   0.13s
Check time:                  0.49s
transformTime time:          0.02s
Source Map time:             0.00s
commentTime time:            0.01s
printTime time:              0.15s
Emit time:                   0.15s
I/O Write time:              0.00s
Total time:                  0.98s
Files:                           8
Lines of Library:             5129
Lines of Definitions:        14460
Lines of TypeScript:            22
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 41367
Symbols:                     24125
Types:                         141
Instantiations:                  2
Memory used:               647252K
Assignability cache size:       10
Identity cache size:             0
Subtype cache size:              0
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.01s
Parse time:                  0.00s
Program time:                0.01s
Bind time:                   0.00s
Check time:                  0.01s
transformTime time:          0.00s
commentTime time:            0.00s
Source Map time:             0.35s
printTime time:              0.47s
Emit time:                   0.47s
I/O Write time:              0.03s
Total time:                  0.49s
Files:                          97
Lines of Library:             9237
Lines of Definitions:        51172
Lines of TypeScript:           590
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 75194
Symbols:                     48239
Types:                        1195
Instantiations:                435
Memory used:               662237K
Assignability cache size:      111
Identity cache size:            11
Subtype cache size:              8
Strict subtype cache size:       1
ResolveModule time:          0.00s
I/O Read time:               0.04s
Parse time:                  0.01s
ResolveTypeReference time:   0.00s
Program time:                0.06s
Bind time:                   0.00s
Check time:                  0.08s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.05s
Emit time:                   0.05s
I/O Write time:              0.00s
Total time:                  0.19s
Files:                         133
Lines of Library:             5129
Lines of Definitions:        14675
Lines of TypeScript:         49981
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                150116
Symbols:                     97063
Types:                       35210
Instantiations:              44610
Memory used:               288942K
Assignability cache size:    13314
Identity cache size:          1173
Subtype cache size:           7729
Strict subtype cache size:    1367
ResolveModule time:          0.00s
I/O Read time:               1.59s
Parse time:                  0.53s
Program time:                2.15s
Bind time:                   0.31s
Check time:                  5.55s
transformTime time:          0.64s
Source Map time:             0.19s
commentTime time:            0.27s
printTime time:              3.21s
Emit time:                   3.21s
I/O Write time:              0.03s
Total time:                 11.22s
Files:                         107
Lines of Library:             8909
Lines of Definitions:        54794
Lines of TypeScript:         16103
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                106633
Symbols:                     82633
Types:                       14858
Instantiations:              18276
Memory used:               354145K
Assignability cache size:     4148
Identity cache size:           157
Subtype cache size:            572
Strict subtype cache size:    3492
ResolveModule time:          0.00s
I/O Read time:               0.21s
Parse time:                  0.14s
ResolveTypeReference time:   0.00s
Program time:                0.36s
Bind time:                   0.08s
Check time:                  1.22s
transformTime time:          0.20s
Source Map time:             0.06s
commentTime time:            0.07s
printTime time:              0.79s
Emit time:                   0.79s
I/O Write time:              0.01s
Total time:                  2.45s
Files:                          97
Lines of Library:             8909
Lines of Definitions:        59557
Lines of TypeScript:           216
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 86971
Symbols:                     56774
Types:                         402
Instantiations:                 41
Memory used:               358635K
Assignability cache size:       61
Identity cache size:             0
Subtype cache size:             10
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.01s
Parse time:                  0.03s
ResolveTypeReference time:   0.00s
Program time:                0.05s
Bind time:                   0.01s
Check time:                  0.02s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.01s
Emit time:                   0.01s
I/O Write time:              0.00s
Total time:                  0.09s
Files:                           7
Lines of Library:             5129
Lines of Definitions:        14454
Lines of TypeScript:          1378
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 44765
Symbols:                     26649
Types:                        3471
Instantiations:               2491
Memory used:               363664K
Assignability cache size:     1723
Identity cache size:             2
Subtype cache size:             93
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.03s
Parse time:                  0.02s
Program time:                0.05s
Bind time:                   0.01s
Check time:                  0.25s
transformTime time:          0.19s
Source Map time:             0.01s
commentTime time:            0.01s
printTime time:              0.15s
Emit time:                   0.15s
I/O Write time:              0.00s
Total time:                  0.45s
Files:                         102
Lines of Library:            14839
Lines of Definitions:        60400
Lines of TypeScript:          1071
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                103935
Symbols:                     70164
Types:                        3057
Instantiations:               1939
Memory used:               455625K
Assignability cache size:      576
Identity cache size:             4
Subtype cache size:             45
Strict subtype cache size:      26
ResolveModule time:          0.00s
I/O Read time:               0.05s
Parse time:                  0.05s
ResolveTypeReference time:   0.00s
Program time:                0.12s
Bind time:                   0.05s
Check time:                  0.15s
transformTime time:          0.01s
commentTime time:            0.00s
Source Map time:             0.45s
printTime time:              0.65s
Emit time:                   0.65s
I/O Write time:              0.04s
Total time:                  0.96s
Files:                          96
Lines of Library:             9237
Lines of Definitions:        51345
Lines of TypeScript:           547
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 75650
Symbols:                     48749
Types:                        1150
Instantiations:               1166
Memory used:               459017K
Assignability cache size:      187
Identity cache size:             2
Subtype cache size:              7
Strict subtype cache size:       2
ResolveModule time:          0.00s
I/O Read time:               0.02s
Parse time:                  0.01s
ResolveTypeReference time:   0.00s
Program time:                0.03s
Bind time:                   0.00s
Check time:                  0.07s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.03s
Emit time:                   0.03s
I/O Write time:              0.00s
Total time:                  0.13s
Files:                          97
Lines of Library:             9237
Lines of Definitions:        51403
Lines of TypeScript:           256
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 75228
Symbols:                     48299
Types:                         695
Instantiations:                330
Memory used:               515434K
Assignability cache size:      130
Identity cache size:             2
Subtype cache size:              9
Strict subtype cache size:       1
ResolveModule time:          0.00s
I/O Read time:               0.01s
Parse time:                  0.00s
ResolveTypeReference time:   0.00s
Program time:                0.02s
Bind time:                   0.00s
Check time:                  0.04s
transformTime time:          0.00s
Source Map time:             0.29s
commentTime time:            0.00s
printTime time:              0.42s
Emit time:                   0.42s
I/O Write time:              0.02s
Total time:                  0.48s
Files:                         122
Lines of Library:             9237
Lines of Definitions:        64665
Lines of TypeScript:         16080
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                126506
Symbols:                     95476
Types:                       18359
Instantiations:              19757
Memory used:               221883K
Assignability cache size:     3715
Identity cache size:           389
Subtype cache size:            629
Strict subtype cache size:     196
ResolveModule time:          0.04s
I/O Read time:               0.34s
Parse time:                  0.19s
ResolveTypeReference time:   0.01s
Program time:                0.59s
Bind time:                   0.11s
Check time:                  2.05s
transformTime time:          0.38s
Source Map time:             0.08s
commentTime time:            0.10s
printTime time:              1.40s
Emit time:                   1.40s
I/O Write time:              0.01s
Total time:                  4.16s
Files:                         101
Lines of Library:             9237
Lines of Definitions:        64157
Lines of TypeScript:           452
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 95958
Symbols:                     62763
Types:                         857
Instantiations:                553
Memory used:               219901K
Assignability cache size:      165
Identity cache size:             3
Subtype cache size:             17
Strict subtype cache size:       6
ResolveModule time:          0.00s
I/O Read time:               0.01s
Parse time:                  0.03s
ResolveTypeReference time:   0.00s
Program time:                0.04s
Bind time:                   0.02s
Check time:                  0.08s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.03s
Emit time:                   0.03s
I/O Write time:              0.01s
Total time:                  0.18s
Files:                         337
Lines of Library:             9237
Lines of Definitions:        68366
Lines of TypeScript:         68872
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                208844
Symbols:                    187245
Types:                       60045
Instantiations:              30395
Memory used:               513947K
Assignability cache size:    15290
Identity cache size:           389
Subtype cache size:           3575
Strict subtype cache size:    2065
ResolveModule time:          0.19s
ResolveTypeReference time:   0.01s
I/O Read time:               2.97s
Parse time:                  0.58s
Program time:                3.82s
Bind time:                   0.30s
Check time:                  3.93s
transformTime time:          0.45s
commentTime time:            0.25s
Source Map time:             0.81s
printTime time:              4.02s
Emit time:                   4.02s
I/O Write time:              0.06s
Total time:                 12.06s
Projects in scope:               19
Projects built:                  14
Files:                         1474
Lines of Library:            117504
Lines of Definitions:        620696
Lines of TypeScript:         310229
Lines of JavaScript:              0
Lines of JSON:                    0
Lines of Other:                   0
Identifiers:                1589596
Symbols:                    1077349
Types:                       226803
Instantiations:              261146
Memory used:                662237K
Assignability cache size:    110151
Identity cache size:           4315
Subtype cache size:           26604
Strict subtype cache size:    10636
I/O Read time:                8.10s
Parse time:                   3.56s
ResolveModule time:           0.31s
ResolveTypeReference time:    0.05s
Program time:                12.32s
Bind time:                    2.01s
Check time:                  26.61s
transformTime time:           3.81s
Source Map time:              2.77s
commentTime time:             1.36s
printTime time:              19.18s
Emit time:                   19.19s
I/O Write time:               0.25s
Config file parsing time:     0.31s
Up-to-date check time time:   0.13s
Total time:                  62.25s

@typescript-bot typescript-bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels May 27, 2022
@sheetalkamat
Copy link
Member Author

@typescript-bot pack this

@typescript-bot
Copy link
Collaborator

typescript-bot commented May 31, 2022

Heya @sheetalkamat, I've started to run the tarball bundle task on this PR at 2726b29. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented May 31, 2022

Hey @sheetalkamat, I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:

{
    "devDependencies": {
        "typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/127132/artifacts?artifactName=tgz&fileId=580FA0EBB6CB077FFBEEE62CBEFD61260A40655081D41481C55E5A50EFF4E6EB02&fileName=/typescript-4.8.0-insiders.20220531.tgz"
    }
}

and then running npm install.


There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/[email protected]".;

@sheetalkamat
Copy link
Member Author

@typescript-bot pack this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jun 1, 2022

Heya @sheetalkamat, I've started to run the tarball bundle task on this PR at a7be227. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jun 1, 2022

Hey @sheetalkamat, I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:

{
    "devDependencies": {
        "typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/127215/artifacts?artifactName=tgz&fileId=A892E2BC67C422E299461BD3FBAAC36329B990CBAB0D0552BA3D79098FE6490402&fileName=/typescript-4.8.0-insiders.20220601.tgz"
    }
}

and then running npm install.


There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/[email protected]".;

@sheetalkamat
Copy link
Member Author

@typescript-bot pack this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jun 1, 2022

Heya @sheetalkamat, I've started to run the tarball bundle task on this PR at d0fe796. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jun 1, 2022

Hey @sheetalkamat, I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:

{
    "devDependencies": {
        "typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/127227/artifacts?artifactName=tgz&fileId=54F7916CF09921DF1E251C2C6B629C17261D262AB295FBE7B99250BB95307F6E02&fileName=/typescript-4.8.0-insiders.20220601.tgz"
    }
}

and then running npm install.


There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/[email protected]".;

@sheetalkamat sheetalkamat requested a review from amcasey June 6, 2022 18:16
@sheetalkamat sheetalkamat changed the title [WIP] Report aggregate statistics for solution as well as some solution perf numbers Report aggregate statistics for solution as well as some solution perf numbers Jun 6, 2022
@sheetalkamat sheetalkamat marked this pull request as ready for review June 6, 2022 18:16
@sheetalkamat
Copy link
Member Author

@amcasey do we want this or just as a branch.

Copy link
Member

@amcasey amcasey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sheetalkamat Can you please post sample output? I'm having trouble visualizing the end result.

@sheetalkamat
Copy link
Member Author

Found 7 errors.

Files:                                       171951
Lines of Library:                           6420183
Lines of Definitions:                      41353137
Lines of TypeScript:                         184107
Lines of JavaScript:                              0
Lines of JSON:                                 5934
Lines of Other:                                   0
Nodes of Library:                          28925676
Nodes of Definitions:                     110089635
Nodes of TypeScript:                         598184
Nodes of JavaScript:                              0
Nodes of JSON:                                13085
Nodes of Other:                                   0
Identifiers:                               50463969
Symbols:                                   27568839
Types:                                       312793
Instantiations:                             5683812
Memory used:                               1629704K
Assignability cache size:                     39916
Identity cache size:                           2079
Subtype cache size:                            1650
Strict subtype cache size:                    10237
I/O Read time:                                4.88s
Parse time:                                   3.25s
ResolveModule time:                           4.16s
ResolveTypeReference time:                   11.34s
Program time:                                35.49s
Bind time:                                    1.50s
Check time:                                  13.44s
printTime time:                              11.75s
Emit time:                                   12.18s
I/O Write time:                              14.81s
Total time:                                  62.62s
transformTime time:                           3.36s
commentTime time:                             0.55s
Source Map time:                              0.27s
Projects:                                      1994
projectsBuilt:                                  255
ParseConfigFile time:                        10.95s
CreateBuildOrder time:                       11.04s
GetUpToDateStatus time:                       0.04s
GetNextInvalidatedProjectCreateInfo time:     0.07s
ReadBuilderProgram time:                      0.01s
OutputFilesWrite time:                       15.28s
UpdateOutputTimestamps time:                  0.01s
InvalidatedProjectBuild time:                82.26s
Build time:                                  93.38s

@amcasey
Copy link
Member

amcasey commented Jun 6, 2022

@sheetalkamat I like the aggregate report for solution builds, but those new rows are a little hard to parse for non-experts. Maybe we'd be better off adding tracepoints?

@amcasey
Copy link
Member

amcasey commented Jun 7, 2022

I guess, personally, I'd rather avoid having both "extended" and "really extended" (i.e. solution). My vote would be to clean these up and then incorporate them into the regular --extendedDiagnostics.

  1. I think we can save six lines by dropping the node counts. They are consistently 3-4X the line count across a variety of repos and they don't give an intuitive measure of size. (I think we might have been guarding against minified files, but I've never seen that come up in practice.) Better still would be to give byte counts for each, but I'm not sure we have convenient access to that info.
  2. I realize the existing items aren't consistent, but let's try to use capitals and spaces as in natural writing: capitalize the first word and space delimit the others.
  3. If there are some measures that are consistently near zero (which we sensibly added before we knew that), can we drop them? I sense that this might be an incremental build and some of the numbers might be lower than usual, so there may not be any.

Nitpicking

Projects: / projectsBuilt:
Maybe Projects in scope and Projects built`? Could these be at the top?

ParseConfigFile time:
Project file parsing time?

CreateBuildOrder time:
I don't know what this is. It looks like it might be a parent of ParseConfigFile. If so, is it useful on its own?

GetUpToDateStatus time:
Up-to-date test time?

GetNextInvalidatedProjectCreateInfo time:
Always fast? Drop this?

ReadBuilderProgram time:
I don't know what this is. If it's always this fast, can we drop it?

OutputFilesWrite time:
This sounds important - which files does it cover? Can we split out time to write tsbuildinfo?

UpdateOutputTimestamps time:
Unless this is sometimes slow, it seems like we can drop this?

InvalidatedProjectBuild time: / Build time
I think these might be trying to distinguish between projects that had to be rebuild and projects that didn't? Is the difference basically going to be GetUpToDateStatus? If so, I'd drop InvalidatedProjectBuild. Is Build the wall clock time or something smaller, like the sum of the total times?

@sheetalkamat
Copy link
Member Author

@amcasey I have cleanup the PR per your feedback. Moved the project build and projects in scope at top.

Also removed some of the times that i had added only for my experiment and checking of #48784 to see if i am making improvements in some of the things i was addressing. I dont think those are useful as such to user.

Tracing is good idea but i havent updated tracing to handle solution (just like how performance was updated). we can do it when we need it or i can add it now, let me know.

Also output file writing was just something i needed as it also included reading output files which my PR addressed so i was just looking to see if it really benefits or not. It isnt interesting as such since all it does is write files on the disk. (And currently read d.ts files to determine if they changed or not (which with my PR isnt needed any more)

Is Build the wall clock time or something smaller, like the sum of the total times?

Build time is end to end build time for all projects.. includes all bookkeeping and actual program build time.

This is how result looks now:

Projects in scope:               1994
Projects Built:                   796
Files:                         829393
Lines of Library:            20093958
Lines of Definitions:       140283317
Lines of TypeScript:           529148
Lines of JavaScript:                0
Lines of JSON:                  55078
Lines of Other:                     0
Identifiers:                172925819
Symbols:                     97300065
Types:                        2143734
Instantiations:              11703019
Memory used:                 1058804K
Assignability cache size:      361673
Identity cache size:            23799
Subtype cache size:              9875
Strict subtype cache size:      45434
I/O Read time:                 16.98s
Parse time:                     9.73s
ResolveModule time:            20.21s
ResolveTypeReference time:     46.50s
Program time:                 195.48s
Bind time:                      4.91s
Check time:                   111.13s
printTime time:                77.73s
Emit time:                     80.41s
I/O Write time:                46.04s
Total time:                   391.93s
transformTime time:            22.92s
Source Map time:                2.54s
commentTime time:               3.04s
Config File Parsing time:      10.81s
Up-to-date check time time:     7.20s
Build time:                   488.68s

Interestingly total time comes before sourceMap time because first program built doesnt have sourceMap enabled but moving around will need to move things around during iterating and i would prefer to not do it but can if you strongly feel about it.

Total time:                   391.93s
transformTime time:            22.92s
Source Map time:                2.54s
commentTime time:               3.04s

@amcasey
Copy link
Member

amcasey commented Jun 7, 2022

@amcasey I have cleanup the PR per your feedback. Moved the project build and projects in scope at top.

Thanks! That looks great!

Tracing is good idea but i havent updated tracing to handle solution (just like how performance was updated). we can do it when we need it or i can add it now, let me know.

No rush.

Is Build the wall clock time or something smaller, like the sum of the total times?

Build time is end to end build time for all projects.. includes all bookkeeping and actual program build time.

Maybe we can just drop the current Total time row entirely and rename Build time to Total time? I've been bothered by the current time for a while because it doesn't actually match wall clock time.

Config File Parsing time: 10.81s
Config file parsing time

Interestingly total time comes before sourceMap time because first program built doesnt have sourceMap enabled but moving around will need to move things around during iterating and i would prefer to not do it but can if you strongly feel about it.

Per my comment above, I'd rather delete (or rename?) the existing measure.

@sheetalkamat
Copy link
Member Author

@amcasey one thing that i was worried was how it looks when running build without --v
Here is one of the run on typescript code base. Thats why i was wondering if there should be build option that prints the aggregate results + build related number under different flag.
Note that with --v things look little better

c:\temp\TypeScript>node c:\TypeScript\built\local\tsc.js -b --extendedDiagnostics src
Files:                          5
Lines of Library:            5129
Lines of Definitions:           0
Lines of TypeScript:          268
Lines of JavaScript:            0
Lines of JSON:                  0
Lines of Other:                 0
Nodes of Library:           15271
Nodes of Definitions:           0
Nodes of TypeScript:         1931
Nodes of JavaScript:            0
Nodes of JSON:                  0
Nodes of Other:                 0
Identifiers:                 7118
Symbols:                     4795
Types:                        742
Instantiations:              1465
Memory used:               41952K
Assignability cache size:     214
Identity cache size:           16
Subtype cache size:             0
Strict subtype cache size:      0
I/O Read time:              0.00s
Parse time:                 0.14s
Program time:               0.15s
Bind time:                  0.05s
Check time:                 0.14s
transformTime time:         0.04s
Source Map time:            0.00s
commentTime time:           0.01s
printTime time:             0.08s
Emit time:                  0.08s
I/O Write time:             0.01s
Total time:                 0.43s
Files:                         163
Lines of Library:             8909
Lines of Definitions:        36794
Lines of TypeScript:        153588
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23471
Nodes of Definitions:        89363
Nodes of TypeScript:        770065
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                354987
Symbols:                    202915
Types:                       85095
Instantiations:             139487
Memory used:               573164K
Assignability cache size:    70312
Identity cache size:          2164
Subtype cache size:          13892
Strict subtype cache size:    3468
I/O Read time:               0.04s
Parse time:                  2.09s
ResolveModule time:          0.05s
ResolveTypeReference time:   0.00s
Program time:                2.26s
Bind time:                   0.97s
Check time:                 12.29s
transformTime time:          1.62s
Source Map time:             0.55s
commentTime time:            0.71s
printTime time:              7.61s
Emit time:                   7.61s
I/O Write time:              0.05s
Total time:                 23.13s
Files:                           7
Lines of Library:             5129
Lines of Definitions:        14454
Lines of TypeScript:          1073
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            15271
Nodes of Definitions:        87499
Nodes of TypeScript:          5246
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                 43442
Symbols:                     26255
Types:                        2268
Instantiations:               1664
Memory used:               598833K
Assignability cache size:      409
Identity cache size:            19
Subtype cache size:             18
Strict subtype cache size:      12
I/O Read time:               0.01s
Parse time:                  0.12s
ResolveModule time:          0.00s
Program time:                0.15s
Bind time:                   0.11s
Check time:                  0.33s
transformTime time:          0.02s
Source Map time:             0.00s
commentTime time:            0.01s
printTime time:              0.13s
Emit time:                   0.13s
I/O Write time:              0.00s
Total time:                  0.72s
Files:                           8
Lines of Library:             5129
Lines of Definitions:        14460
Lines of TypeScript:            22
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            15271
Nodes of Definitions:        87553
Nodes of TypeScript:           114
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                 41367
Symbols:                     24125
Types:                         141
Instantiations:                  2
Memory used:               150366K
Assignability cache size:       10
Identity cache size:             0
Subtype cache size:              0
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.00s
Program time:                0.00s
Bind time:                   0.00s
Check time:                  0.01s
transformTime time:          0.00s
commentTime time:            0.00s
Source Map time:             0.40s
printTime time:              0.71s
Emit time:                   0.71s
I/O Write time:              0.03s
Total time:                  0.72s
Files:                          97
Lines of Library:             9237
Lines of Definitions:        51172
Lines of TypeScript:           590
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23963
Nodes of Definitions:       176327
Nodes of TypeScript:          2494
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                 75194
Symbols:                     48239
Types:                        1195
Instantiations:                435
Memory used:               165383K
Assignability cache size:      111
Identity cache size:            11
Subtype cache size:              8
Strict subtype cache size:       1
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.01s
ResolveTypeReference time:   0.00s
Program time:                0.01s
Bind time:                   0.01s
Check time:                  0.08s
transformTime time:          0.02s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.06s
Emit time:                   0.06s
I/O Write time:              0.01s
Total time:                  0.17s
Files:                         133
Lines of Library:             5129
Lines of Definitions:        14675
Lines of TypeScript:         49981
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            15271
Nodes of Definitions:        88703
Nodes of TypeScript:        258336
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                150116
Symbols:                     97063
Types:                       35210
Instantiations:              44610
Memory used:               358045K
Assignability cache size:    13314
Identity cache size:          1173
Subtype cache size:           7729
Strict subtype cache size:    1367
ResolveModule time:          0.00s
I/O Read time:               0.03s
Parse time:                  0.37s
Program time:                0.41s
Bind time:                   0.36s
Check time:                  5.89s
transformTime time:          0.64s
Source Map time:             0.17s
commentTime time:            0.23s
printTime time:              2.83s
Emit time:                   2.83s
I/O Write time:              0.02s
Total time:                  9.50s
Files:                         107
Lines of Library:             8909
Lines of Definitions:        54794
Lines of TypeScript:         16103
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23471
Nodes of Definitions:       195708
Nodes of TypeScript:         69780
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                106633
Symbols:                     82633
Types:                       14858
Instantiations:              18276
Memory used:               411258K
Assignability cache size:     4148
Identity cache size:           157
Subtype cache size:            572
Strict subtype cache size:    3492
ResolveModule time:          0.00s
I/O Read time:               0.01s
Parse time:                  0.12s
ResolveTypeReference time:   0.00s
Program time:                0.14s
Bind time:                   0.11s
Check time:                  1.13s
transformTime time:          0.18s
Source Map time:             0.04s
commentTime time:            0.06s
printTime time:              0.72s
Emit time:                   0.72s
I/O Write time:              0.01s
Total time:                  2.10s
Files:                          97
Lines of Library:             8909
Lines of Definitions:        59557
Lines of TypeScript:           216
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23471
Nodes of Definitions:       209193
Nodes of TypeScript:           972
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                 86971
Symbols:                     56774
Types:                         402
Instantiations:                 41
Memory used:               418963K
Assignability cache size:       61
Identity cache size:             0
Subtype cache size:             10
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.02s
ResolveTypeReference time:   0.00s
Program time:                0.03s
Bind time:                   0.01s
Check time:                  0.02s
transformTime time:          0.00s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.01s
Emit time:                   0.01s
I/O Write time:              0.00s
Total time:                  0.08s
Files:                           7
Lines of Library:             5129
Lines of Definitions:        14454
Lines of TypeScript:          1378
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            15271
Nodes of Definitions:        87499
Nodes of TypeScript:          8498
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                 44765
Symbols:                     26649
Types:                        3471
Instantiations:               2491
Memory used:               435399K
Assignability cache size:     1723
Identity cache size:             2
Subtype cache size:             93
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.01s
Program time:                0.01s
Bind time:                   0.01s
Check time:                  0.18s
transformTime time:          0.12s
Source Map time:             0.00s
commentTime time:            0.01s
printTime time:              0.11s
Emit time:                   0.11s
I/O Write time:              0.00s
Total time:                  0.31s
Files:                         102
Lines of Library:            14839
Lines of Definitions:        60400
Lines of TypeScript:          1071
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            54976
Nodes of Definitions:       219265
Nodes of TypeScript:          5182
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                103935
Symbols:                     70164
Types:                        3057
Instantiations:               1939
Memory used:               521030K
Assignability cache size:      576
Identity cache size:             4
Subtype cache size:             45
Strict subtype cache size:      26
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.04s
ResolveTypeReference time:   0.00s
Program time:                0.05s
Bind time:                   0.02s
Check time:                  0.13s
transformTime time:          0.01s
commentTime time:            0.01s
Source Map time:             0.40s
printTime time:              0.90s
Emit time:                   0.90s
I/O Write time:              0.04s
Total time:                  1.11s
Files:                          96
Lines of Library:             9237
Lines of Definitions:        51345
Lines of TypeScript:           547
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23963
Nodes of Definitions:       177146
Nodes of TypeScript:          2977
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                 75650
Symbols:                     48749
Types:                        1150
Instantiations:               1166
Memory used:               524823K
Assignability cache size:      187
Identity cache size:             2
Subtype cache size:              7
Strict subtype cache size:       2
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.00s
ResolveTypeReference time:   0.00s
Program time:                0.01s
Bind time:                   0.00s
Check time:                  0.07s
transformTime time:          0.01s
Source Map time:             0.01s
commentTime time:            0.00s
printTime time:              0.06s
Emit time:                   0.06s
I/O Write time:              0.01s
Total time:                  0.14s
Files:                          97
Lines of Library:             9237
Lines of Definitions:        51403
Lines of TypeScript:           256
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23963
Nodes of Definitions:       177457
Nodes of TypeScript:          1545
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                 75228
Symbols:                     48299
Types:                         695
Instantiations:                330
Memory used:               349153K
Assignability cache size:      130
Identity cache size:             2
Subtype cache size:              9
Strict subtype cache size:       1
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.01s
ResolveTypeReference time:   0.00s
Program time:                0.02s
Bind time:                   0.00s
Check time:                  0.05s
transformTime time:          0.01s
Source Map time:             0.30s
commentTime time:            0.00s
printTime time:              0.63s
Emit time:                   0.63s
I/O Write time:              0.02s
Total time:                  0.71s
Files:                          92
Lines of Library:             8909
Lines of Definitions:        36718
Lines of TypeScript:            19
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23471
Nodes of Definitions:        88828
Nodes of TypeScript:            87
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                 39196
Symbols:                     26393
Types:                         122
Instantiations:                  3
Memory used:               351860K
Assignability cache size:        2
Identity cache size:             0
Subtype cache size:              0
Strict subtype cache size:       0
I/O Read time:               0.00s
Parse time:                  0.00s
ResolveTypeReference time:   0.00s
ResolveModule time:          0.00s
Program time:                0.01s
Bind time:                   0.00s
Check time:                  0.00s
transformTime time:          0.00s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.01s
Emit time:                   0.01s
I/O Write time:              0.00s
Total time:                  0.02s
Files:                          31
Lines of Library:             7387
Lines of Definitions:            0
Lines of TypeScript:           516
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            20159
Nodes of Definitions:            0
Nodes of TypeScript:          2741
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                  9248
Symbols:                      5427
Types:                         502
Instantiations:                402
Memory used:               364239K
Assignability cache size:      125
Identity cache size:             0
Subtype cache size:             62
Strict subtype cache size:       0
I/O Read time:               0.00s
Parse time:                  0.00s
Program time:                0.03s
Bind time:                   0.00s
Check time:                  0.06s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.03s
Emit time:                   0.03s
I/O Write time:              0.00s
Total time:                  0.12s
Files:                          92
Lines of Library:             8909
Lines of Definitions:        36718
Lines of TypeScript:            72
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23471
Nodes of Definitions:        88828
Nodes of TypeScript:           285
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                 39254
Symbols:                     26398
Types:                         139
Instantiations:                  3
Memory used:               357195K
Assignability cache size:       13
Identity cache size:             0
Subtype cache size:              0
Strict subtype cache size:       0
I/O Read time:               0.00s
Parse time:                  0.00s
ResolveTypeReference time:   0.00s
ResolveModule time:          0.00s
Program time:                0.04s
Bind time:                   0.00s
Check time:                  0.01s
printTime time:              0.01s
Emit time:                   0.01s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
I/O Write time:              0.00s
Total time:                  0.06s
Files:                         122
Lines of Library:             9237
Lines of Definitions:        64665
Lines of TypeScript:         16080
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23963
Nodes of Definitions:       224083
Nodes of TypeScript:         95155
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                126506
Symbols:                     95476
Types:                       18359
Instantiations:              19757
Memory used:               449018K
Assignability cache size:     3715
Identity cache size:           389
Subtype cache size:            629
Strict subtype cache size:     196
ResolveModule time:          0.02s
I/O Read time:               0.01s
Parse time:                  0.21s
ResolveTypeReference time:   0.00s
Program time:                0.27s
Bind time:                   0.10s
Check time:                  1.27s
transformTime time:          0.26s
Source Map time:             0.05s
commentTime time:            0.07s
printTime time:              0.98s
Emit time:                   0.98s
I/O Write time:              0.01s
Total time:                  2.62s
Files:                         101
Lines of Library:             9237
Lines of Definitions:        64157
Lines of TypeScript:           452
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23963
Nodes of Definitions:       231000
Nodes of TypeScript:          2386
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                 95958
Symbols:                     62763
Types:                         857
Instantiations:                553
Memory used:               462123K
Assignability cache size:      165
Identity cache size:             3
Subtype cache size:             17
Strict subtype cache size:       6
ResolveModule time:          0.00s
I/O Read time:               0.02s
Parse time:                  0.02s
ResolveTypeReference time:   0.00s
Program time:                0.04s
Bind time:                   0.01s
Check time:                  0.04s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.03s
Emit time:                   0.03s
I/O Write time:              0.01s
Total time:                  0.12s
Files:                         337
Lines of Library:             9237
Lines of Definitions:        68366
Lines of TypeScript:         68872
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Nodes of Library:            23963
Nodes of Definitions:       243556
Nodes of TypeScript:        296975
Nodes of JavaScript:             0
Nodes of JSON:                   0
Nodes of Other:                  0
Identifiers:                208844
Symbols:                    187245
Types:                       60045
Instantiations:              30395
Memory used:               749913K
Assignability cache size:    15290
Identity cache size:           389
Subtype cache size:           3575
Strict subtype cache size:    2065
ResolveModule time:          0.03s
ResolveTypeReference time:   0.01s
I/O Read time:               0.03s
Parse time:                  0.31s
Program time:                0.40s
Bind time:                   0.25s
Check time:                  3.55s
transformTime time:          0.38s
commentTime time:            0.19s
Source Map time:             0.65s
printTime time:              3.40s
Emit time:                   3.40s
I/O Write time:              0.05s
Total time:                  7.60s
Projects in scope:               19
Projects Built:                  18
Files:                         1694
Lines of Library:            147838
Lines of Definitions:        694132
Lines of TypeScript:         311104
Lines of JavaScript:              0
Lines of JSON:                    0
Lines of Other:                   0
Identifiers:                1684412
Symbols:                    1140362
Types:                       228308
Instantiations:              263019
Memory used:                749913K
Assignability cache size:    110505
Identity cache size:           4331
Subtype cache size:           26666
Strict subtype cache size:    10636
I/O Read time:                0.15s
Parse time:                   3.47s
Program time:                 4.04s
Bind time:                    2.03s
Check time:                  25.25s
transformTime time:           3.34s
Source Map time:              2.59s
commentTime time:             1.32s
printTime time:              18.32s
Emit time:                   18.32s
I/O Write time:               0.27s
Total time:                  49.65s
ResolveModule time:           0.10s
ResolveTypeReference time:    0.02s
Config File Parsing time:     0.05s
Up-to-date check time time:   0.06s
Build time:                  51.17s

@sheetalkamat
Copy link
Member Author

This is how it looks now:

c:\temp\TypeScript>node c:\TypeScript\built\local\tsc.js -b --extendedDiagnostics src
Files:                         163
Lines of Library:             8909
Lines of Definitions:        36794
Lines of TypeScript:        153588
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                354987
Symbols:                    202915
Types:                       85095
Instantiations:             139487
Memory used:               569197K
Assignability cache size:    70312
Identity cache size:          2164
Subtype cache size:          13892
Strict subtype cache size:    3468
I/O Read time:               2.79s
Parse time:                  1.84s
ResolveModule time:          0.07s
ResolveTypeReference time:   0.02s
Program time:                4.82s
Bind time:                   0.98s
Check time:                 12.68s
transformTime time:          1.89s
Source Map time:             0.53s
commentTime time:            0.64s
printTime time:              7.79s
Emit time:                   7.79s
I/O Write time:              0.04s
Total time:                 26.28s
Files:                           7
Lines of Library:             5129
Lines of Definitions:        14454
Lines of TypeScript:          1073
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 43442
Symbols:                     26255
Types:                        2268
Instantiations:               1664
Memory used:               596105K
Assignability cache size:      409
Identity cache size:            19
Subtype cache size:             18
Strict subtype cache size:      12
I/O Read time:               0.03s
Parse time:                  0.15s
ResolveModule time:          0.00s
Program time:                0.20s
Bind time:                   0.13s
Check time:                  0.49s
transformTime time:          0.02s
Source Map time:             0.00s
commentTime time:            0.01s
printTime time:              0.15s
Emit time:                   0.15s
I/O Write time:              0.00s
Total time:                  0.98s
Files:                           8
Lines of Library:             5129
Lines of Definitions:        14460
Lines of TypeScript:            22
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 41367
Symbols:                     24125
Types:                         141
Instantiations:                  2
Memory used:               647252K
Assignability cache size:       10
Identity cache size:             0
Subtype cache size:              0
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.01s
Parse time:                  0.00s
Program time:                0.01s
Bind time:                   0.00s
Check time:                  0.01s
transformTime time:          0.00s
commentTime time:            0.00s
Source Map time:             0.35s
printTime time:              0.47s
Emit time:                   0.47s
I/O Write time:              0.03s
Total time:                  0.49s
Files:                          97
Lines of Library:             9237
Lines of Definitions:        51172
Lines of TypeScript:           590
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 75194
Symbols:                     48239
Types:                        1195
Instantiations:                435
Memory used:               662237K
Assignability cache size:      111
Identity cache size:            11
Subtype cache size:              8
Strict subtype cache size:       1
ResolveModule time:          0.00s
I/O Read time:               0.04s
Parse time:                  0.01s
ResolveTypeReference time:   0.00s
Program time:                0.06s
Bind time:                   0.00s
Check time:                  0.08s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.05s
Emit time:                   0.05s
I/O Write time:              0.00s
Total time:                  0.19s
Files:                         133
Lines of Library:             5129
Lines of Definitions:        14675
Lines of TypeScript:         49981
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                150116
Symbols:                     97063
Types:                       35210
Instantiations:              44610
Memory used:               288942K
Assignability cache size:    13314
Identity cache size:          1173
Subtype cache size:           7729
Strict subtype cache size:    1367
ResolveModule time:          0.00s
I/O Read time:               1.59s
Parse time:                  0.53s
Program time:                2.15s
Bind time:                   0.31s
Check time:                  5.55s
transformTime time:          0.64s
Source Map time:             0.19s
commentTime time:            0.27s
printTime time:              3.21s
Emit time:                   3.21s
I/O Write time:              0.03s
Total time:                 11.22s
Files:                         107
Lines of Library:             8909
Lines of Definitions:        54794
Lines of TypeScript:         16103
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                106633
Symbols:                     82633
Types:                       14858
Instantiations:              18276
Memory used:               354145K
Assignability cache size:     4148
Identity cache size:           157
Subtype cache size:            572
Strict subtype cache size:    3492
ResolveModule time:          0.00s
I/O Read time:               0.21s
Parse time:                  0.14s
ResolveTypeReference time:   0.00s
Program time:                0.36s
Bind time:                   0.08s
Check time:                  1.22s
transformTime time:          0.20s
Source Map time:             0.06s
commentTime time:            0.07s
printTime time:              0.79s
Emit time:                   0.79s
I/O Write time:              0.01s
Total time:                  2.45s
Files:                          97
Lines of Library:             8909
Lines of Definitions:        59557
Lines of TypeScript:           216
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 86971
Symbols:                     56774
Types:                         402
Instantiations:                 41
Memory used:               358635K
Assignability cache size:       61
Identity cache size:             0
Subtype cache size:             10
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.01s
Parse time:                  0.03s
ResolveTypeReference time:   0.00s
Program time:                0.05s
Bind time:                   0.01s
Check time:                  0.02s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.01s
Emit time:                   0.01s
I/O Write time:              0.00s
Total time:                  0.09s
Files:                           7
Lines of Library:             5129
Lines of Definitions:        14454
Lines of TypeScript:          1378
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 44765
Symbols:                     26649
Types:                        3471
Instantiations:               2491
Memory used:               363664K
Assignability cache size:     1723
Identity cache size:             2
Subtype cache size:             93
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.03s
Parse time:                  0.02s
Program time:                0.05s
Bind time:                   0.01s
Check time:                  0.25s
transformTime time:          0.19s
Source Map time:             0.01s
commentTime time:            0.01s
printTime time:              0.15s
Emit time:                   0.15s
I/O Write time:              0.00s
Total time:                  0.45s
Files:                         102
Lines of Library:            14839
Lines of Definitions:        60400
Lines of TypeScript:          1071
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                103935
Symbols:                     70164
Types:                        3057
Instantiations:               1939
Memory used:               455625K
Assignability cache size:      576
Identity cache size:             4
Subtype cache size:             45
Strict subtype cache size:      26
ResolveModule time:          0.00s
I/O Read time:               0.05s
Parse time:                  0.05s
ResolveTypeReference time:   0.00s
Program time:                0.12s
Bind time:                   0.05s
Check time:                  0.15s
transformTime time:          0.01s
commentTime time:            0.00s
Source Map time:             0.45s
printTime time:              0.65s
Emit time:                   0.65s
I/O Write time:              0.04s
Total time:                  0.96s
Files:                          96
Lines of Library:             9237
Lines of Definitions:        51345
Lines of TypeScript:           547
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 75650
Symbols:                     48749
Types:                        1150
Instantiations:               1166
Memory used:               459017K
Assignability cache size:      187
Identity cache size:             2
Subtype cache size:              7
Strict subtype cache size:       2
ResolveModule time:          0.00s
I/O Read time:               0.02s
Parse time:                  0.01s
ResolveTypeReference time:   0.00s
Program time:                0.03s
Bind time:                   0.00s
Check time:                  0.07s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.03s
Emit time:                   0.03s
I/O Write time:              0.00s
Total time:                  0.13s
Files:                          97
Lines of Library:             9237
Lines of Definitions:        51403
Lines of TypeScript:           256
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 75228
Symbols:                     48299
Types:                         695
Instantiations:                330
Memory used:               515434K
Assignability cache size:      130
Identity cache size:             2
Subtype cache size:              9
Strict subtype cache size:       1
ResolveModule time:          0.00s
I/O Read time:               0.01s
Parse time:                  0.00s
ResolveTypeReference time:   0.00s
Program time:                0.02s
Bind time:                   0.00s
Check time:                  0.04s
transformTime time:          0.00s
Source Map time:             0.29s
commentTime time:            0.00s
printTime time:              0.42s
Emit time:                   0.42s
I/O Write time:              0.02s
Total time:                  0.48s
Files:                         122
Lines of Library:             9237
Lines of Definitions:        64665
Lines of TypeScript:         16080
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                126506
Symbols:                     95476
Types:                       18359
Instantiations:              19757
Memory used:               221883K
Assignability cache size:     3715
Identity cache size:           389
Subtype cache size:            629
Strict subtype cache size:     196
ResolveModule time:          0.04s
I/O Read time:               0.34s
Parse time:                  0.19s
ResolveTypeReference time:   0.01s
Program time:                0.59s
Bind time:                   0.11s
Check time:                  2.05s
transformTime time:          0.38s
Source Map time:             0.08s
commentTime time:            0.10s
printTime time:              1.40s
Emit time:                   1.40s
I/O Write time:              0.01s
Total time:                  4.16s
Files:                         101
Lines of Library:             9237
Lines of Definitions:        64157
Lines of TypeScript:           452
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 95958
Symbols:                     62763
Types:                         857
Instantiations:                553
Memory used:               219901K
Assignability cache size:      165
Identity cache size:             3
Subtype cache size:             17
Strict subtype cache size:       6
ResolveModule time:          0.00s
I/O Read time:               0.01s
Parse time:                  0.03s
ResolveTypeReference time:   0.00s
Program time:                0.04s
Bind time:                   0.02s
Check time:                  0.08s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.03s
Emit time:                   0.03s
I/O Write time:              0.01s
Total time:                  0.18s
Files:                         337
Lines of Library:             9237
Lines of Definitions:        68366
Lines of TypeScript:         68872
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                208844
Symbols:                    187245
Types:                       60045
Instantiations:              30395
Memory used:               513947K
Assignability cache size:    15290
Identity cache size:           389
Subtype cache size:           3575
Strict subtype cache size:    2065
ResolveModule time:          0.19s
ResolveTypeReference time:   0.01s
I/O Read time:               2.97s
Parse time:                  0.58s
Program time:                3.82s
Bind time:                   0.30s
Check time:                  3.93s
transformTime time:          0.45s
commentTime time:            0.25s
Source Map time:             0.81s
printTime time:              4.02s
Emit time:                   4.02s
I/O Write time:              0.06s
Total time:                 12.06s
Projects in scope:               19
Projects built:                  14
Files:                         1474
Lines of Library:            117504
Lines of Definitions:        620696
Lines of TypeScript:         310229
Lines of JavaScript:              0
Lines of JSON:                    0
Lines of Other:                   0
Identifiers:                1589596
Symbols:                    1077349
Types:                       226803
Instantiations:              261146
Memory used:                662237K
Assignability cache size:    110151
Identity cache size:           4315
Subtype cache size:           26604
Strict subtype cache size:    10636
I/O Read time:                8.10s
Parse time:                   3.56s
ResolveModule time:           0.31s
ResolveTypeReference time:    0.05s
Program time:                12.32s
Bind time:                    2.01s
Check time:                  26.61s
transformTime time:           3.81s
Source Map time:              2.77s
commentTime time:             1.36s
printTime time:              19.18s
Emit time:                   19.19s
I/O Write time:               0.25s
Config file parsing time:     0.31s
Up-to-date check time time:   0.13s
Total time:                  62.25s

@amcasey
Copy link
Member

amcasey commented Jun 8, 2022

@sheetalkamat I love it, but you might want to confirm with @rbuckton that it won't break any of his tooling.

@sheetalkamat sheetalkamat requested a review from rbuckton June 8, 2022 16:30
@sheetalkamat
Copy link
Member Author

@rbuckton Can you please review the change and see if it is ok with the perf tooling. Thanks
With this change, tsc --build prints aggregate information about the performance + some additional build related perf numbers... Also removed Node count per suggestion.

@amcasey
Copy link
Member

amcasey commented Jun 8, 2022

If the perf tools track Total, which I don't think they do, the time may jump, now that it's more accurate. I'm almost certain no one cared about the Node counts (chiefly because no one complained when I split it into separate rows).

@sheetalkamat
Copy link
Member Author

@amcasey i didnt change total for program.. I just omit that row when reporting aggregate and report total as End to End tsc --build time

@rbuckton
Copy link
Contributor

rbuckton commented Jun 8, 2022

Is this going to print Parse time (et al) multiple times? That could confuse the benchmark tool, especially if you also print Parse time (et al) again for the aggregate of all projects at the end, as that will result in the parse time being doubled.

Also, it is possible to run benchmarks with --extendedDiagnostics. I've used that purely to determine how much extra time --extendedDiagnostics adds to a build.

@rbuckton
Copy link
Contributor

rbuckton commented Jun 8, 2022

Is this going to print Parse time (et al) multiple times? That could confuse the benchmark tool, especially if you also print Parse time (et al) again for the aggregate of all projects at the end, as that will result in the parse time being doubled.

I should clarify this. When the benchmark tool runs, it intercepts standard output to match anything that looks like a --diagnostic (or --extendedDiagnostic) output. Each metric is aggregated, so if Parse time: 1.23s appears twice the aggregate parse time is 2.46. If we use the exact same header Parse time: 2.46 to represent the aggregate, we'd end up with 4.92:

Parse time:                  1.23s  // from project 1
...
Parse time:                  1.23s  // from project 2
...
Parse time:                  2.46s  // aggregate of projects 1 & 2

@amcasey
Copy link
Member

amcasey commented Jun 8, 2022

I guess we could prefix each measure in the summary with "Aggregate"?

If we add another flag - and I'd still prefer not to - I'd want that flag to disable the summary output because I want users to retain the mental model that --extendedDiagnostics is the most verbose. Of course, if we were going to have tool-specific output (a la git porcelain), we could do better than semi-structured text.

@sheetalkamat
Copy link
Member Author

So do we prefer option that prints aggregate result or We prepend each entry with Aggregate

@amcasey
Copy link
Member

amcasey commented Jun 8, 2022

I prefer the prefix.

@sheetalkamat
Copy link
Member Author

I will also change back Total time(end to end build time for all projects + book keeping) that gets reported to Build time so that we dont confuse that entry either. Will still skip Aggregate Total time which is addition of Total time from all the project results since that is confusing entry any way.

Config file parsing time:     0.31s
Up-to-date check time time:   0.13s
Build time:                  62.25s

@sheetalkamat
Copy link
Member Author

Result now looks like this:

c:\temp\TypeScript>node c:\TypeScript\built\local\tsc.js -b src --extendedDiagnostics
Files:                          5
Lines of Library:            5129
Lines of Definitions:           0
Lines of TypeScript:          268
Lines of JavaScript:            0
Lines of JSON:                  0
Lines of Other:                 0
Identifiers:                 7118
Symbols:                     4795
Types:                        742
Instantiations:              1465
Memory used:               41935K
Assignability cache size:     214
Identity cache size:           16
Subtype cache size:             0
Strict subtype cache size:      0
I/O Read time:              0.00s
Parse time:                 0.14s
Program time:               0.15s
Bind time:                  0.05s
Check time:                 0.13s
transformTime time:         0.04s
Source Map time:            0.00s
commentTime time:           0.01s
printTime time:             0.08s
Emit time:                  0.08s
I/O Write time:             0.00s
Total time:                 0.42s
Files:                         163
Lines of Library:             8909
Lines of Definitions:        36794
Lines of TypeScript:        153588
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                354987
Symbols:                    202915
Types:                       85095
Instantiations:             139487
Memory used:               560364K
Assignability cache size:    70312
Identity cache size:          2164
Subtype cache size:          13892
Strict subtype cache size:    3468
I/O Read time:               0.05s
Parse time:                  1.48s
ResolveModule time:          0.04s
ResolveTypeReference time:   0.00s
Program time:                1.64s
Bind time:                   0.96s
Check time:                 10.20s
transformTime time:          1.28s
Source Map time:             0.47s
commentTime time:            0.56s
printTime time:              6.10s
Emit time:                   6.10s
I/O Write time:              0.02s
Total time:                 18.89s
Files:                           7
Lines of Library:             5129
Lines of Definitions:        14454
Lines of TypeScript:          1073
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 43442
Symbols:                     26255
Types:                        2268
Instantiations:               1664
Memory used:               588009K
Assignability cache size:      409
Identity cache size:            19
Subtype cache size:             18
Strict subtype cache size:      12
I/O Read time:               0.00s
Parse time:                  0.09s
ResolveModule time:          0.00s
Program time:                0.11s
Bind time:                   0.08s
Check time:                  0.22s
transformTime time:          0.01s
Source Map time:             0.01s
commentTime time:            0.01s
printTime time:              0.09s
Emit time:                   0.09s
I/O Write time:              0.00s
Total time:                  0.50s
Files:                           8
Lines of Library:             5129
Lines of Definitions:        14460
Lines of TypeScript:            22
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 41367
Symbols:                     24125
Types:                         141
Instantiations:                  2
Memory used:               150929K
Assignability cache size:       10
Identity cache size:             0
Subtype cache size:              0
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.00s
Program time:                0.00s
Bind time:                   0.00s
Check time:                  0.01s
transformTime time:          0.00s
commentTime time:            0.00s
Source Map time:             0.26s
printTime time:              0.60s
Emit time:                   0.60s
I/O Write time:              0.01s
Total time:                  0.61s
Files:                          97
Lines of Library:             9237
Lines of Definitions:        51172
Lines of TypeScript:           590
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 75194
Symbols:                     48239
Types:                        1195
Instantiations:                435
Memory used:               166052K
Assignability cache size:      111
Identity cache size:            11
Subtype cache size:              8
Strict subtype cache size:       1
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.00s
ResolveTypeReference time:   0.00s
Program time:                0.01s
Bind time:                   0.01s
Check time:                  0.07s
transformTime time:          0.03s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.07s
Emit time:                   0.07s
I/O Write time:              0.00s
Total time:                  0.16s
Files:                         133
Lines of Library:             5129
Lines of Definitions:        14675
Lines of TypeScript:         49981
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                150116
Symbols:                     97063
Types:                       35210
Instantiations:              44610
Memory used:               355005K
Assignability cache size:    13314
Identity cache size:          1173
Subtype cache size:           7729
Strict subtype cache size:    1367
ResolveModule time:          0.00s
I/O Read time:               0.02s
Parse time:                  0.28s
Program time:                0.31s
Bind time:                   0.29s
Check time:                  4.77s
transformTime time:          0.55s
Source Map time:             0.14s
commentTime time:            0.21s
printTime time:              2.49s
Emit time:                   2.49s
I/O Write time:              0.01s
Total time:                  7.85s
Files:                         107
Lines of Library:             8909
Lines of Definitions:        54794
Lines of TypeScript:         16103
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                106633
Symbols:                     82633
Types:                       14858
Instantiations:              18276
Memory used:               418625K
Assignability cache size:     4148
Identity cache size:           157
Subtype cache size:            572
Strict subtype cache size:    3492
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.10s
ResolveTypeReference time:   0.00s
Program time:                0.11s
Bind time:                   0.08s
Check time:                  1.08s
transformTime time:          0.16s
Source Map time:             0.04s
commentTime time:            0.05s
printTime time:              0.66s
Emit time:                   0.66s
I/O Write time:              0.01s
Total time:                  1.93s
Files:                          97
Lines of Library:             8909
Lines of Definitions:        59557
Lines of TypeScript:           216
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 86971
Symbols:                     56774
Types:                         402
Instantiations:                 41
Memory used:               411034K
Assignability cache size:       61
Identity cache size:             0
Subtype cache size:             10
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.02s
ResolveTypeReference time:   0.00s
Program time:                0.03s
Bind time:                   0.01s
Check time:                  0.03s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.02s
Emit time:                   0.02s
I/O Write time:              0.00s
Total time:                  0.08s
Files:                           7
Lines of Library:             5129
Lines of Definitions:        14454
Lines of TypeScript:          1378
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 44765
Symbols:                     26649
Types:                        3471
Instantiations:               2491
Memory used:               427370K
Assignability cache size:     1723
Identity cache size:             2
Subtype cache size:             93
Strict subtype cache size:       0
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.01s
Program time:                0.01s
Bind time:                   0.00s
Check time:                  0.16s
transformTime time:          0.11s
Source Map time:             0.00s
commentTime time:            0.01s
printTime time:              0.11s
Emit time:                   0.11s
I/O Write time:              0.00s
Total time:                  0.28s
Files:                         102
Lines of Library:            14839
Lines of Definitions:        60400
Lines of TypeScript:          1071
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                103935
Symbols:                     70164
Types:                        3057
Instantiations:               1939
Memory used:               517011K
Assignability cache size:      576
Identity cache size:             4
Subtype cache size:             45
Strict subtype cache size:      26
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.04s
ResolveTypeReference time:   0.00s
Program time:                0.05s
Bind time:                   0.03s
Check time:                  0.11s
transformTime time:          0.01s
commentTime time:            0.00s
Source Map time:             0.38s
printTime time:              0.83s
Emit time:                   0.83s
I/O Write time:              0.02s
Total time:                  1.02s
Files:                          96
Lines of Library:             9237
Lines of Definitions:        51345
Lines of TypeScript:           547
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 75650
Symbols:                     48749
Types:                        1150
Instantiations:               1166
Memory used:               520483K
Assignability cache size:      187
Identity cache size:             2
Subtype cache size:              7
Strict subtype cache size:       2
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.00s
ResolveTypeReference time:   0.00s
Program time:                0.01s
Bind time:                   0.00s
Check time:                  0.06s
transformTime time:          0.01s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.03s
Emit time:                   0.03s
I/O Write time:              0.00s
Total time:                  0.10s
Files:                          97
Lines of Library:             9237
Lines of Definitions:        51403
Lines of TypeScript:           256
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 75228
Symbols:                     48299
Types:                         695
Instantiations:                330
Memory used:               350647K
Assignability cache size:      130
Identity cache size:             2
Subtype cache size:              9
Strict subtype cache size:       1
ResolveModule time:          0.00s
I/O Read time:               0.00s
Parse time:                  0.00s
ResolveTypeReference time:   0.00s
Program time:                0.02s
Bind time:                   0.01s
Check time:                  0.07s
transformTime time:          0.02s
Source Map time:             0.25s
commentTime time:            0.00s
printTime time:              0.60s
Emit time:                   0.60s
I/O Write time:              0.01s
Total time:                  0.69s
Files:                          92
Lines of Library:             8909
Lines of Definitions:        36718
Lines of TypeScript:            19
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 39196
Symbols:                     26393
Types:                         122
Instantiations:                  3
Memory used:               353313K
Assignability cache size:        2
Identity cache size:             0
Subtype cache size:              0
Strict subtype cache size:       0
I/O Read time:               0.00s
Parse time:                  0.00s
ResolveTypeReference time:   0.00s
ResolveModule time:          0.00s
Program time:                0.01s
Bind time:                   0.00s
Check time:                  0.00s
transformTime time:          0.00s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.00s
Emit time:                   0.00s
I/O Write time:              0.00s
Total time:                  0.01s
Files:                          31
Lines of Library:             7387
Lines of Definitions:            0
Lines of TypeScript:           516
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                  9248
Symbols:                      5427
Types:                         502
Instantiations:                402
Memory used:               365569K
Assignability cache size:      125
Identity cache size:             0
Subtype cache size:             62
Strict subtype cache size:       0
I/O Read time:               0.00s
Parse time:                  0.00s
Program time:                0.02s
Bind time:                   0.00s
Check time:                  0.05s
transformTime time:          0.00s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.02s
Emit time:                   0.02s
I/O Write time:              0.00s
Total time:                  0.09s
Files:                          92
Lines of Library:             8909
Lines of Definitions:        36718
Lines of TypeScript:            72
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 39254
Symbols:                     26398
Types:                         139
Instantiations:                  3
Memory used:               358096K
Assignability cache size:       13
Identity cache size:             0
Subtype cache size:              0
Strict subtype cache size:       0
I/O Read time:               0.00s
Parse time:                  0.00s
ResolveTypeReference time:   0.00s
ResolveModule time:          0.00s
Program time:                0.04s
Bind time:                   0.00s
Check time:                  0.01s
printTime time:              0.01s
Emit time:                   0.01s
transformTime time:          0.00s
Source Map time:             0.00s
commentTime time:            0.00s
I/O Write time:              0.00s
Total time:                  0.06s
Files:                         122
Lines of Library:             9237
Lines of Definitions:        64665
Lines of TypeScript:         16080
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                126506
Symbols:                     95476
Types:                       18359
Instantiations:              19757
Memory used:               446581K
Assignability cache size:     3715
Identity cache size:           389
Subtype cache size:            629
Strict subtype cache size:     196
ResolveModule time:          0.01s
I/O Read time:               0.00s
Parse time:                  0.14s
ResolveTypeReference time:   0.00s
Program time:                0.19s
Bind time:                   0.09s
Check time:                  1.24s
transformTime time:          0.28s
Source Map time:             0.05s
commentTime time:            0.07s
printTime time:              0.98s
Emit time:                   0.98s
I/O Write time:              0.00s
Total time:                  2.50s
Files:                         101
Lines of Library:             9237
Lines of Definitions:        64157
Lines of TypeScript:           452
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                 95958
Symbols:                     62763
Types:                         857
Instantiations:                553
Memory used:               459854K
Assignability cache size:      165
Identity cache size:             3
Subtype cache size:             17
Strict subtype cache size:       6
ResolveModule time:          0.00s
I/O Read time:               0.02s
Parse time:                  0.02s
ResolveTypeReference time:   0.00s
Program time:                0.05s
Bind time:                   0.01s
Check time:                  0.04s
transformTime time:          0.00s
Source Map time:             0.00s
commentTime time:            0.00s
printTime time:              0.02s
Emit time:                   0.02s
I/O Write time:              0.00s
Total time:                  0.12s
Files:                         337
Lines of Library:             9237
Lines of Definitions:        68366
Lines of TypeScript:         68872
Lines of JavaScript:             0
Lines of JSON:                   0
Lines of Other:                  0
Identifiers:                208844
Symbols:                    187245
Types:                       60045
Instantiations:              30395
Memory used:               749628K
Assignability cache size:    15290
Identity cache size:           389
Subtype cache size:           3575
Strict subtype cache size:    2065
ResolveModule time:          0.03s
ResolveTypeReference time:   0.01s
I/O Read time:               0.04s
Parse time:                  0.34s
Program time:                0.45s
Bind time:                   0.24s
Check time:                  3.04s
transformTime time:          0.30s
commentTime time:            0.17s
Source Map time:             0.61s
printTime time:              3.15s
Emit time:                   3.15s
I/O Write time:              0.02s
Total time:                  6.88s
Projects in scope:                        19
Projects built:                           18
Aggregate Files:                        1694
Aggregate Lines of Library:           147838
Aggregate Lines of Definitions:       694132
Aggregate Lines of TypeScript:        311104
Aggregate Lines of JavaScript:             0
Aggregate Lines of JSON:                   0
Aggregate Lines of Other:                  0
Aggregate Identifiers:               1684412
Aggregate Symbols:                   1140362
Aggregate Types:                      228308
Aggregate Instantiations:             263019
Aggregate Memory used:               749628K
Aggregate Assignability cache size:   110505
Aggregate Identity cache size:          4331
Aggregate Subtype cache size:          26666
Aggregate Strict subtype cache size:   10636
Aggregate I/O Read time:               0.15s
Aggregate Parse time:                  2.68s
Aggregate Program time:                3.21s
Aggregate Bind time:                   1.87s
Aggregate Check time:                 21.26s
Aggregate transformTime time:          2.82s
Aggregate Source Map time:             2.22s
Aggregate commentTime time:            1.10s
Aggregate printTime time:             15.86s
Aggregate Emit time:                  15.87s
Aggregate I/O Write time:              0.13s
Aggregate ResolveModule time:          0.09s
Aggregate ResolveTypeReference time:   0.02s
Config file parsing time:              0.06s
Up-to-date check time time:            0.00s
Build time:                           43.55s

@rbuckton
Copy link
Contributor

rbuckton commented Jun 9, 2022

Does this indicate which project each set of diagnostics is related to? It's not necessary for benchmarks, per se, but seems like an important piece of information missing in the output above.

@sheetalkamat
Copy link
Member Author

sheetalkamat commented Jun 9, 2022

You get that if you pass --v

@sheetalkamat
Copy link
Member Author

@typescript-bot pack this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jun 9, 2022

Heya @sheetalkamat, I've started to run the tarball bundle task on this PR at 150c981. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jun 9, 2022

Hey @sheetalkamat, I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:

{
    "devDependencies": {
        "typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/127786/artifacts?artifactName=tgz&fileId=53EE71B3CBF8FDED97EB450E573FAEDC696CD79CE6A525B8E5BD73734AB6D71F02&fileName=/typescript-4.8.0-insiders.20220609.tgz"
    }
}

and then running npm install.


There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/[email protected]".;

@sheetalkamat
Copy link
Member Author

@rbuckton is this now ready to merge.. Any other feedback. Thanks

Copy link
Contributor

@rbuckton rbuckton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Most of ts.performance is intended to mirror the native User Timings API so that we can leverage the native API with other tooling (such as generating .cpuprofiles, running with node --prof, etc.), and I'd like to stay as close to that API as possible. I think there are alternatives to this approach that don't involve duplicating the ts.performance namespace just to handle an additional use case.

const count = counts.get(markName) ?? 0;
counts.set(markName, count + 1);
marks.set(markName, timestamp());
performanceImpl?.mark(markName);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This calls out to the native PerformanceHooks API for use with CPU profiles and a few other things in ts-perf. Is it intentional that both performance and buildPerformance call into this?

Comment on lines +22 to +23
export const performance = createPerformanceTracker();
export const buildPerformance = createPerformanceTracker();
Copy link
Contributor

@rbuckton rbuckton Jun 10, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we need two different performance instances? Do these two overlap WRT mark and measure names?

The original ts.performance API was designed to mirror the native User Timings API and essentially act as an adapter between the DOM and NodeJS implementations, but the user timings API doesn't support multiple instances.

Comment on lines +791 to +795
buildPerformance.forEachCount((count, name) => statistics.push({ name, value: count, type: StatisticType.count }));
buildPerformance.forEachStatistics(s => statistics.push(s));
buildPerformance.forEachMeasure((duration, name) => statistics.push({ name: `${name} time`, value: duration, type: StatisticType.time }));
buildPerformance.disable();
buildPerformance.enable();
Copy link
Contributor

@rbuckton rbuckton Jun 10, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than introducing a separate buildPerformance object, couldn't we just prefix builder-specific marks and measures and use that prefix as a filter when printing? If it's about resetting marks and measures between builds in watch mode, I'd rather we implement clearMarks(name) and clearMeasures(name) from the native User timings API:

Comment on lines +9 to +18
export interface Statistic {
name: string;
value: number;
type: StatisticType
}

export enum StatisticType {
time,
count,
memory,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not clear on what this is for, given that we already have a concept of "count" (i.e., "marks"), and "time" (i.e., "measure"). Memory usage isn't generally tracked by the native User Timings API but can be accomplished by providing additional metadata to a mark. We could probably extend our version of mark to support this behavior.

*/
function measure(measureName: string, startMarkName: string, endMarkName: string) {
if (enabled) {
durationMarks.add(startMarkName).add(endMarkName);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are these excluded here? They wouldn't be excluded by the native User Timings API.

* @param endMarkName The name of the ending mark. If not supplied, the current timestamp is
* used.
*/
function measure(measureName: string, startMarkName: string, endMarkName: string) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This signature no longer aligns with the native User Timings API. Neither a startMarkName nor an endMarkName are required.

@sheetalkamat sheetalkamat deleted the aggregateTimes branch August 10, 2022 23:38
@sheetalkamat
Copy link
Member Author

Closed in favor of #50267

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

4 participants