Skip to content
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

Cache control flow results across invocations #31003

Merged
merged 6 commits into from May 10, 2019

Conversation

weswigham
Copy link
Member

As mentioned in #30945 and alluded to in #30931, our real issue with control flow is that we weren't caching across invocations of getFlowTypeOfReference, which meant that our standard check order (top to bottom) always triggered worst case exponential complexity as it repeatedly trampolined into and out of getFlowTypeOfReference with each subsequent expression. By memoizing the results between invocations, we neatly avoid this by reusing the results from the check of the prior line. We clear this cache at the start of checkSourceFileWorker, since flow graphs can never span multiple files and by clearing it we can keep the memory overhead of keeping the cache around lower. We can't really clear it fully at any inner boundaries (like function declarations), since the cache still would have some results form the outer layer we wanna keep around until we're done with that layer (we could track this with a hierarchical cache structure, but.... eh? is it worth it right now?).

Fixes #29926

@weswigham
Copy link
Member Author

Rapidfire extended testing:

@typescript-bot test this
@typescript-bot run dt
@typescript-bot user test this
@typescript-bot perf test

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 17, 2019

Heya @weswigham, I've started to run the community code test suite on this PR at 2e8866b. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 17, 2019

Heya @weswigham, I've started to run the parallelized Definitely Typed test suite on this PR at 2e8866b. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 17, 2019

Heya @weswigham, I've started to run the extended test suite on this PR at 2e8866b. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 17, 2019

Heya @weswigham, I've started to run the perf test suite on this PR at 2e8866b. You can monitor the build here. It should now contribute to this PR's status checks.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 18, 2019

@weswigham
The results of the perf run you requested are in!

Here they are:


Comparison Report - master..31003

Metric master 31003 Delta Best Worst
Angular - node (v6.5.0, x64)
Memory used 340,460k (± 0.41%) 342,038k (± 0.37%) +1,578k (+ 0.46%) 340,659k 344,768k
Parse Time 1.58s (± 1.64%) 1.57s (± 1.58%) -0.00s (- 0.25%) 1.53s 1.62s
Bind Time 1.61s (± 2.71%) 1.62s (± 3.36%) +0.01s (+ 0.37%) 1.50s 1.72s
Check Time 4.77s (± 0.52%) 5.07s (± 0.81%) +0.30s (+ 6.29%) 4.97s 5.17s
Emit Time 6.32s (± 1.80%) 6.55s (± 3.79%) +0.23s (+ 3.62%) 6.25s 7.48s
Total Time 14.28s (± 0.80%) 14.81s (± 1.78%) +0.53s (+ 3.73%) 14.45s 15.78s
Monaco - node (v6.5.0, x64)
Memory used 364,449k (± 0.12%) 366,927k (± 0.08%) +2,479k (+ 0.68%) 365,910k 367,331k
Parse Time 1.27s (± 0.41%) 1.26s (± 0.38%) -0.01s (- 0.47%) 1.25s 1.27s
Bind Time 1.51s (± 0.77%) 1.51s (± 0.55%) -0.01s (- 0.53%) 1.49s 1.53s
Check Time 5.61s (± 0.95%) 6.00s (± 0.66%) +0.39s (+ 6.93%) 5.88s 6.08s
Emit Time 3.49s (± 2.52%) 3.50s (± 2.61%) +0.01s (+ 0.17%) 3.28s 3.64s
Total Time 11.88s (± 1.17%) 12.26s (± 1.09%) +0.38s (+ 3.23%) 11.90s 12.47s
TFS - node (v6.5.0, x64)
Memory used 321,053k (± 0.01%) 323,117k (± 0.01%) +2,064k (+ 0.64%) 323,069k 323,177k
Parse Time 0.98s (± 0.63%) 0.98s (± 0.70%) +0.00s (+ 0.41%) 0.97s 1.00s
Bind Time 1.26s (± 0.39%) 1.27s (± 1.06%) +0.01s (+ 0.55%) 1.24s 1.30s
Check Time 4.29s (± 0.67%) 5.08s (± 0.61%) +0.79s (+18.44%) 5.03s 5.14s
Emit Time 3.14s (± 0.55%) 2.80s (± 1.35%) -0.34s (-10.78%) 2.69s 2.85s
Total Time 9.68s (± 0.45%) 10.14s (± 0.62%) +0.46s (+ 4.78%) 9.98s 10.28s
Angular - node (v6.5.0, x86)
Memory used 190,985k (± 0.00%) 191,684k (± 0.00%) +698k (+ 0.37%) 191,666k 191,700k
Parse Time 1.46s (± 0.62%) 1.47s (± 0.47%) +0.01s (+ 0.41%) 1.45s 1.48s
Bind Time 1.50s (± 1.33%) 1.51s (± 1.29%) +0.01s (+ 0.40%) 1.48s 1.57s
Check Time 4.67s (± 1.27%) 4.96s (± 0.91%) +0.29s (+ 6.23%) 4.83s 5.08s
Emit Time 6.08s (± 1.20%) 6.14s (± 1.04%) +0.06s (+ 0.99%) 6.01s 6.29s
Total Time 13.71s (± 0.92%) 14.07s (± 0.82%) +0.36s (+ 2.66%) 13.89s 14.42s
Monaco - node (v6.5.0, x86)
Memory used 204,343k (± 0.01%) 205,199k (± 0.00%) +856k (+ 0.42%) 205,182k 205,220k
Parse Time 1.26s (± 0.78%) 1.26s (± 0.49%) -0.00s (- 0.24%) 1.24s 1.27s
Bind Time 1.55s (± 0.56%) 1.55s (± 0.44%) -0.01s (- 0.39%) 1.53s 1.56s
Check Time 4.62s (± 1.59%) 5.18s (± 0.74%) +0.57s (+12.24%) 5.07s 5.24s
Emit Time 3.14s (± 2.63%) 2.93s (± 1.68%) -0.21s (- 6.75%) 2.79s 3.01s
Total Time 10.57s (± 0.36%) 10.91s (± 0.50%) +0.34s (+ 3.25%) 10.78s 11.02s
TFS - node (v6.5.0, x86)
Memory used 180,310k (± 0.01%) 181,368k (± 0.01%) +1,058k (+ 0.59%) 181,331k 181,420k
Parse Time 0.97s (± 0.61%) 0.97s (± 0.35%) -0.00s (- 0.10%) 0.97s 0.98s
Bind Time 1.30s (± 0.68%) 1.31s (± 0.40%) +0.01s (+ 0.61%) 1.30s 1.32s
Check Time 3.84s (± 0.44%) 4.21s (± 0.40%) +0.37s (+ 9.67%) 4.18s 4.25s
Emit Time 2.55s (± 0.69%) 2.58s (± 0.74%) +0.03s (+ 1.02%) 2.53s 2.61s
Total Time 8.66s (± 0.27%) 9.07s (± 0.30%) +0.41s (+ 4.73%) 9.02s 9.12s
Angular - node (v8.9.0, x64)
Memory used 330,630k (± 0.01%) 332,098k (± 0.02%) +1,468k (+ 0.44%) 332,006k 332,250k
Parse Time 1.78s (± 0.20%) 1.78s (± 0.36%) +0.00s (+ 0.11%) 1.76s 1.79s
Bind Time 1.35s (± 0.48%) 1.36s (± 0.88%) +0.01s (+ 0.37%) 1.33s 1.39s
Check Time 4.54s (± 1.59%) 4.93s (± 0.87%) +0.39s (+ 8.61%) 4.86s 5.05s
Emit Time 5.95s (± 3.33%) 5.82s (± 1.65%) -0.13s (- 2.22%) 5.63s 6.01s
Total Time 13.62s (± 1.07%) 13.88s (± 0.58%) +0.26s (+ 1.94%) 13.74s 14.14s
Monaco - node (v8.9.0, x64)
Memory used 358,409k (± 0.02%) 360,278k (± 0.01%) +1,869k (+ 0.52%) 360,174k 360,381k
Parse Time 1.45s (± 0.53%) 1.44s (± 0.34%) -0.01s (- 0.48%) 1.44s 1.46s
Bind Time 1.52s (± 0.63%) 1.52s (± 0.77%) -0.01s (- 0.59%) 1.49s 1.55s
Check Time 4.72s (± 1.42%) 5.02s (± 0.83%) +0.31s (+ 6.49%) 4.97s 5.12s
Emit Time 3.21s (± 4.39%) 3.11s (± 4.95%) -0.10s (- 3.12%) 2.84s 3.29s
Total Time 10.90s (± 0.78%) 11.09s (± 1.13%) +0.19s (+ 1.76%) 10.85s 11.28s
TFS - node (v8.9.0, x64)
Memory used 313,769k (± 0.02%) 315,954k (± 0.01%) +2,185k (+ 0.70%) 315,855k 316,020k
Parse Time 1.14s (± 0.39%) 1.14s (± 0.41%) +0.00s (+ 0.18%) 1.13s 1.15s
Bind Time 1.24s (± 1.27%) 1.23s (± 0.74%) -0.01s (- 0.81%) 1.21s 1.25s
Check Time 4.24s (± 0.41%) 4.85s (± 0.60%) +0.61s (+14.49%) 4.76s 4.89s
Emit Time 3.14s (± 0.34%) 2.88s (± 0.82%) -0.25s (- 8.13%) 2.82s 2.92s
Total Time 9.75s (± 0.26%) 10.10s (± 0.44%) +0.35s (+ 3.61%) 9.96s 10.17s
Angular - node (v8.9.0, x86)
Memory used 187,125k (± 0.02%) 187,812k (± 0.03%) +688k (+ 0.37%) 187,706k 187,968k
Parse Time 1.74s (± 0.52%) 1.74s (± 0.82%) +0.00s (+ 0.06%) 1.71s 1.78s
Bind Time 1.53s (± 0.88%) 1.53s (± 0.42%) -0.00s (- 0.07%) 1.51s 1.54s
Check Time 4.22s (± 0.49%) 4.48s (± 0.38%) +0.26s (+ 6.14%) 4.45s 4.53s
Emit Time 5.67s (± 1.36%) 5.68s (± 0.63%) +0.00s (+ 0.07%) 5.58s 5.75s
Total Time 13.16s (± 0.75%) 13.42s (± 0.34%) +0.27s (+ 2.02%) 13.30s 13.53s
Monaco - node (v8.9.0, x86)
Memory used 199,771k (± 0.02%) 200,690k (± 0.01%) +919k (+ 0.46%) 200,603k 200,727k
Parse Time 1.50s (± 0.55%) 1.50s (± 0.71%) 0.00s ( 0.00%) 1.49s 1.53s
Bind Time 1.39s (± 0.24%) 1.39s (± 0.37%) +0.00s (+ 0.07%) 1.38s 1.40s
Check Time 4.55s (± 0.48%) 4.85s (± 0.69%) +0.29s (+ 6.39%) 4.76s 4.91s
Emit Time 3.09s (± 0.78%) 3.13s (± 0.71%) +0.05s (+ 1.52%) 3.10s 3.20s
Total Time 10.53s (± 0.34%) 10.87s (± 0.33%) +0.34s (+ 3.23%) 10.76s 10.92s
TFS - node (v8.9.0, x86)
Memory used 175,898k (± 0.02%) 176,892k (± 0.02%) +995k (+ 0.57%) 176,818k 176,949k
Parse Time 1.19s (± 0.84%) 1.20s (± 0.78%) +0.01s (+ 0.50%) 1.18s 1.22s
Bind Time 1.23s (± 0.89%) 1.24s (± 1.04%) +0.00s (+ 0.41%) 1.21s 1.27s
Check Time 4.05s (± 0.74%) 4.36s (± 0.73%) +0.31s (+ 7.62%) 4.25s 4.42s
Emit Time 2.78s (± 1.37%) 2.80s (± 1.12%) +0.02s (+ 0.83%) 2.70s 2.84s
Total Time 9.25s (± 0.65%) 9.60s (± 0.44%) +0.34s (+ 3.71%) 9.49s 9.68s
Angular - node (v9.0.0, x64)
Memory used 330,408k (± 0.02%) 331,872k (± 0.02%) +1,464k (+ 0.44%) 331,774k 332,017k
Parse Time 1.63s (± 0.38%) 1.63s (± 0.50%) -0.00s (- 0.12%) 1.61s 1.64s
Bind Time 1.33s (± 0.94%) 1.34s (± 0.85%) +0.00s (+ 0.30%) 1.31s 1.36s
Check Time 4.26s (± 0.52%) 4.75s (± 0.64%) +0.50s (+11.68%) 4.69s 4.84s
Emit Time 5.77s (± 1.64%) 5.37s (± 0.71%) -0.39s (- 6.80%) 5.26s 5.44s
Total Time 12.99s (± 0.73%) 13.09s (± 0.33%) +0.10s (+ 0.77%) 13.01s 13.18s
Monaco - node (v9.0.0, x64)
Memory used 358,142k (± 0.01%) 360,091k (± 0.01%) +1,949k (+ 0.54%) 360,060k 360,175k
Parse Time 1.30s (± 0.73%) 1.29s (± 0.65%) -0.01s (- 0.54%) 1.27s 1.31s
Bind Time 1.52s (± 0.91%) 1.51s (± 0.45%) -0.00s (- 0.00%) 1.50s 1.53s
Check Time 4.62s (± 0.22%) 4.88s (± 0.47%) +0.26s (+ 5.56%) 4.84s 4.95s
Emit Time 3.22s (± 0.45%) 3.22s (± 0.31%) +0.00s (+ 0.03%) 3.20s 3.24s
Total Time 10.66s (± 0.32%) 10.91s (± 0.30%) +0.25s (+ 2.34%) 10.86s 11.01s
TFS - node (v9.0.0, x64)
Memory used 313,755k (± 0.02%) 315,826k (± 0.01%) +2,071k (+ 0.66%) 315,697k 315,897k
Parse Time 1.01s (± 0.47%) 1.01s (± 0.49%) +0.00s (+ 0.20%) 1.01s 1.03s
Bind Time 1.20s (± 0.61%) 1.21s (± 0.51%) +0.01s (+ 0.58%) 1.20s 1.23s
Check Time 4.19s (± 1.93%) 4.57s (± 1.24%) +0.38s (+ 9.16%) 4.42s 4.65s
Emit Time 2.98s (± 2.44%) 2.89s (± 2.68%) -0.09s (- 2.89%) 2.79s 3.12s
Total Time 9.38s (± 0.54%) 9.68s (± 0.38%) +0.30s (+ 3.19%) 9.60s 9.78s
Angular - node (v9.0.0, x86)
Memory used 187,289k (± 0.02%) 188,028k (± 0.03%) +738k (+ 0.39%) 187,905k 188,149k
Parse Time 1.55s (± 1.21%) 1.56s (± 0.70%) +0.01s (+ 0.39%) 1.54s 1.58s
Bind Time 1.51s (± 0.45%) 1.52s (± 0.39%) +0.00s (+ 0.07%) 1.50s 1.53s
Check Time 3.99s (± 0.80%) 4.21s (± 0.72%) +0.22s (+ 5.49%) 4.15s 4.30s
Emit Time 5.34s (± 1.34%) 5.35s (± 1.24%) +0.01s (+ 0.11%) 5.24s 5.55s
Total Time 12.40s (± 0.80%) 12.63s (± 0.51%) +0.23s (+ 1.83%) 12.49s 12.79s
Monaco - node (v9.0.0, x86)
Memory used 199,855k (± 0.03%) 200,758k (± 0.03%) +902k (+ 0.45%) 200,648k 200,945k
Parse Time 1.33s (± 0.72%) 1.32s (± 0.47%) -0.00s (- 0.38%) 1.31s 1.33s
Bind Time 1.36s (± 0.52%) 1.36s (± 0.88%) -0.00s (- 0.07%) 1.34s 1.40s
Check Time 4.44s (± 0.57%) 4.71s (± 1.10%) +0.27s (+ 6.03%) 4.61s 4.87s
Emit Time 3.02s (± 0.49%) 3.05s (± 0.58%) +0.03s (+ 1.13%) 3.02s 3.10s
Total Time 10.15s (± 0.33%) 10.44s (± 0.49%) +0.30s (+ 2.92%) 10.30s 10.57s
TFS - node (v9.0.0, x86)
Memory used 176,002k (± 0.02%) 177,022k (± 0.02%) +1,020k (+ 0.58%) 176,966k 177,105k
Parse Time 1.03s (± 0.65%) 1.04s (± 0.72%) +0.00s (+ 0.39%) 1.03s 1.06s
Bind Time 1.22s (± 1.20%) 1.22s (± 1.03%) -0.00s (- 0.33%) 1.20s 1.26s
Check Time 3.83s (± 0.45%) 4.10s (± 0.52%) +0.27s (+ 7.00%) 4.06s 4.15s
Emit Time 2.71s (± 0.62%) 2.74s (± 1.43%) +0.03s (+ 1.14%) 2.65s 2.85s
Total Time 8.79s (± 0.31%) 9.09s (± 0.57%) +0.30s (+ 3.37%) 8.99s 9.20s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-142-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v6.5.0, x64)
  • node (v6.5.0, x86)
  • node (v8.9.0, x64)
  • node (v8.9.0, x86)
  • node (v9.0.0, x64)
  • node (v9.0.0, x86)
Scenarios
  • Angular - node (v6.5.0, x64)
  • Angular - node (v6.5.0, x86)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Angular - node (v9.0.0, x64)
  • Angular - node (v9.0.0, x86)
  • Monaco - node (v6.5.0, x64)
  • Monaco - node (v6.5.0, x86)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • Monaco - node (v9.0.0, x64)
  • Monaco - node (v9.0.0, x86)
  • TFS - node (v6.5.0, x64)
  • TFS - node (v6.5.0, x86)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • TFS - node (v9.0.0, x64)
  • TFS - node (v9.0.0, x86)
Benchmark Name Iterations
Current 31003 10
Baseline master 10

@weswigham
Copy link
Member Author

Alright @typescript-bot, give me another go at it; let's see if caching the new thing that we think may have a cost helps.

@typescript-bot test this
@typescript-bot run dt
@typescript-bot user test this
@typescript-bot perf test

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 18, 2019

Heya @weswigham, I've started to run the extended test suite on this PR at 885db7d. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 18, 2019

Heya @weswigham, I've started to run the parallelized Definitely Typed test suite on this PR at 885db7d. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 18, 2019

Heya @weswigham, I've started to run the perf test suite on this PR at 885db7d. You can monitor the build here. It should now contribute to this PR's status checks.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 18, 2019

Heya @weswigham, I've started to run the community code test suite on this PR at 885db7d. You can monitor the build here. It should now contribute to this PR's status checks.

@weswigham
Copy link
Member Author

@typescript-bot perf test on the post-merge commit I just added just in case it's because the branch was out of date and we secretly introduced sick perf gains into master in the last day and that extra caching doesn't actually do much.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 18, 2019

Heya @weswigham, I've started to run the perf test suite on this PR at ff2330d. You can monitor the build here. It should now contribute to this PR's status checks.

Update: The results are in!

@ajafff
Copy link
Contributor

ajafff commented Apr 18, 2019

We clear this cache at the start of checkSourceFileWorker, since flow graphs can never span multiple files and by clearing it we can keep the memory overhead of keeping the cache around lower.

I guess there is no way to clear this cache when an API user queries types in arbitrary source files?
How much does it impact memory consumption?

@microsoft microsoft deleted a comment from typescript-bot Apr 18, 2019
@microsoft microsoft deleted a comment from typescript-bot Apr 18, 2019
@weswigham
Copy link
Member Author

@typescript-bot perf test my latest hypothesis

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 18, 2019

Heya @weswigham, I've started to run the perf test suite on this PR at 73cb712. You can monitor the build here. It should now contribute to this PR's status checks.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@weswigham
The results of the perf run you requested are in!

Here they are:

Comparison Report - master..31003

Metric master 31003 Delta Best Worst
Angular - node (v6.5.0, x64)
Memory used 339,754k (± 0.26%) 346,764k (± 0.40%) +7,010k (+ 2.06%) 345,518k 349,624k
Parse Time 1.62s (± 1.30%) 1.61s (± 0.94%) -0.01s (- 0.50%) 1.55s 1.63s
Bind Time 1.56s (± 1.81%) 1.57s (± 1.41%) +0.01s (+ 0.90%) 1.53s 1.65s
Check Time 4.76s (± 0.53%) 5.19s (± 0.36%) +0.43s (+ 9.06%) 5.15s 5.23s
Emit Time 6.28s (± 0.99%) 6.38s (± 1.70%) +0.09s (+ 1.50%) 6.20s 6.65s
Total Time 14.21s (± 0.44%) 14.75s (± 0.78%) +0.53s (+ 3.74%) 14.55s 15.02s
Monaco - node (v6.5.0, x64)
Memory used 364,468k (± 0.12%) 371,731k (± 0.32%) +7,263k (+ 1.99%) 370,130k 374,802k
Parse Time 1.26s (± 0.62%) 1.26s (± 0.66%) +0.01s (+ 0.48%) 1.25s 1.29s
Bind Time 1.51s (± 0.48%) 1.52s (± 0.51%) +0.01s (+ 0.46%) 1.50s 1.54s
Check Time 5.53s (± 2.48%) 6.08s (± 1.04%) +0.56s (+10.10%) 5.88s 6.20s
Emit Time 3.51s (± 2.80%) 3.56s (± 3.07%) +0.05s (+ 1.37%) 3.26s 3.71s
Total Time 11.80s (± 1.94%) 12.42s (± 1.29%) +0.62s (+ 5.23%) 12.03s 12.69s
TFS - node (v6.5.0, x64)
Memory used 321,072k (± 0.00%) 335,685k (± 0.01%) +14,613k (+ 4.55%) 335,624k 335,743k
Parse Time 0.98s (± 0.61%) 0.97s (± 0.70%) -0.00s (- 0.20%) 0.97s 1.00s
Bind Time 1.26s (± 0.44%) 1.27s (± 0.71%) +0.01s (+ 0.71%) 1.26s 1.30s
Check Time 4.29s (± 0.45%) 5.41s (± 0.60%) +1.11s (+25.94%) 5.34s 5.49s
Emit Time 3.13s (± 0.60%) 2.88s (± 1.11%) -0.25s (- 7.95%) 2.81s 2.96s
Total Time 9.67s (± 0.34%) 10.54s (± 0.63%) +0.87s (+ 9.01%) 10.39s 10.70s
Angular - node (v6.5.0, x86)
Memory used 191,029k (± 0.01%) 193,840k (± 0.01%) +2,811k (+ 1.47%) 193,787k 193,873k
Parse Time 1.46s (± 0.79%) 1.45s (± 0.25%) -0.01s (- 0.41%) 1.45s 1.46s
Bind Time 1.50s (± 0.81%) 1.53s (± 2.64%) +0.03s (+ 2.07%) 1.48s 1.67s
Check Time 4.74s (± 2.43%) 5.14s (± 0.80%) +0.40s (+ 8.35%) 5.04s 5.23s
Emit Time 6.10s (± 1.77%) 6.10s (± 1.09%) +0.00s (+ 0.07%) 5.90s 6.21s
Total Time 13.80s (± 1.62%) 14.23s (± 0.67%) +0.43s (+ 3.09%) 14.02s 14.42s
Monaco - node (v6.5.0, x86)
Memory used 204,326k (± 0.01%) 211,263k (± 0.00%) +6,937k (+ 3.40%) 211,246k 211,277k
Parse Time 1.27s (± 0.79%) 1.26s (± 1.05%) -0.00s (- 0.32%) 1.24s 1.31s
Bind Time 1.55s (± 0.42%) 1.54s (± 0.36%) -0.01s (- 0.64%) 1.53s 1.55s
Check Time 4.57s (± 1.13%) 5.30s (± 0.65%) +0.73s (+16.01%) 5.25s 5.38s
Emit Time 3.17s (± 1.78%) 2.92s (± 1.17%) -0.25s (- 8.01%) 2.83s 2.98s
Total Time 10.56s (± 0.29%) 11.02s (± 0.52%) +0.46s (+ 4.37%) 10.90s 11.21s
TFS - node (v6.5.0, x86)
Memory used 180,324k (± 0.01%) 187,985k (± 0.01%) +7,661k (+ 4.25%) 187,948k 188,013k
Parse Time 0.97s (± 0.67%) 0.98s (± 0.85%) +0.00s (+ 0.41%) 0.96s 1.00s
Bind Time 1.31s (± 0.96%) 1.31s (± 0.91%) +0.00s (+ 0.15%) 1.28s 1.33s
Check Time 3.84s (± 0.50%) 4.46s (± 0.74%) +0.62s (+16.15%) 4.40s 4.53s
Emit Time 2.55s (± 0.43%) 2.61s (± 1.07%) +0.06s (+ 2.28%) 2.54s 2.67s
Total Time 8.67s (± 0.34%) 9.35s (± 0.53%) +0.68s (+ 7.82%) 9.27s 9.47s
Angular - node (v8.9.0, x64)
Memory used 330,711k (± 0.02%) 336,104k (± 0.03%) +5,393k (+ 1.63%) 335,676k 336,216k
Parse Time 1.80s (± 0.67%) 1.79s (± 0.22%) -0.01s (- 0.39%) 1.78s 1.80s
Bind Time 1.36s (± 1.25%) 1.34s (± 0.54%) -0.01s (- 1.11%) 1.33s 1.36s
Check Time 4.55s (± 1.69%) 5.06s (± 0.45%) +0.51s (+11.13%) 5.03s 5.13s
Emit Time 5.91s (± 1.86%) 5.75s (± 2.28%) -0.17s (- 2.79%) 5.46s 6.07s
Total Time 13.62s (± 0.79%) 13.94s (± 0.84%) +0.32s (+ 2.35%) 13.72s 14.23s
Monaco - node (v8.9.0, x64)
Memory used 358,457k (± 0.01%) 367,610k (± 0.19%) +9,153k (+ 2.55%) 364,853k 368,080k
Parse Time 1.44s (± 0.47%) 1.44s (± 0.66%) -0.00s (- 0.07%) 1.41s 1.46s
Bind Time 1.54s (± 0.57%) 1.53s (± 0.92%) -0.00s (- 0.20%) 1.50s 1.57s
Check Time 4.73s (± 1.39%) 5.14s (± 0.86%) +0.42s (+ 8.80%) 5.07s 5.28s
Emit Time 3.19s (± 4.69%) 3.26s (± 2.68%) +0.07s (+ 2.07%) 2.91s 3.33s
Total Time 10.90s (± 0.89%) 11.38s (± 0.69%) +0.48s (+ 4.38%) 11.10s 11.50s
TFS - node (v8.9.0, x64)
Memory used 313,879k (± 0.02%) 324,552k (± 0.02%) +10,673k (+ 3.40%) 324,448k 324,688k
Parse Time 1.15s (± 0.63%) 1.14s (± 0.59%) -0.01s (- 0.96%) 1.12s 1.15s
Bind Time 1.23s (± 1.32%) 1.23s (± 0.67%) +0.00s (+ 0.16%) 1.21s 1.25s
Check Time 4.23s (± 0.60%) 5.08s (± 0.41%) +0.86s (+20.30%) 5.04s 5.13s
Emit Time 3.12s (± 1.07%) 2.92s (± 0.73%) -0.20s (- 6.34%) 2.89s 2.99s
Total Time 9.73s (± 0.63%) 10.38s (± 0.31%) +0.65s (+ 6.66%) 10.33s 10.46s
Angular - node (v8.9.0, x86)
Memory used 187,147k (± 0.02%) 189,734k (± 0.02%) +2,587k (+ 1.38%) 189,650k 189,847k
Parse Time 1.75s (± 0.54%) 1.75s (± 0.78%) -0.00s (- 0.06%) 1.73s 1.79s
Bind Time 1.52s (± 0.62%) 1.52s (± 0.62%) +0.00s (+ 0.26%) 1.50s 1.54s
Check Time 4.22s (± 0.53%) 4.66s (± 0.74%) +0.44s (+10.43%) 4.58s 4.72s
Emit Time 5.65s (± 0.88%) 5.70s (± 0.89%) +0.05s (+ 0.85%) 5.55s 5.81s
Total Time 13.15s (± 0.41%) 13.63s (± 0.58%) +0.49s (+ 3.72%) 13.43s 13.84s
Monaco - node (v8.9.0, x86)
Memory used 199,805k (± 0.03%) 202,790k (± 0.01%) +2,985k (+ 1.49%) 202,731k 202,839k
Parse Time 1.51s (± 1.11%) 1.50s (± 0.33%) -0.01s (- 0.86%) 1.49s 1.51s
Bind Time 1.39s (± 0.47%) 1.38s (± 0.65%) -0.01s (- 0.50%) 1.37s 1.41s
Check Time 4.55s (± 0.53%) 5.00s (± 0.46%) +0.46s (+10.05%) 4.95s 5.05s
Emit Time 3.09s (± 0.56%) 3.15s (± 0.56%) +0.05s (+ 1.78%) 3.11s 3.19s
Total Time 10.54s (± 0.47%) 11.03s (± 0.40%) +0.49s (+ 4.68%) 10.95s 11.13s
TFS - node (v8.9.0, x86)
Memory used 175,879k (± 0.02%) 180,640k (± 0.02%) +4,760k (+ 2.71%) 180,553k 180,719k
Parse Time 1.21s (± 0.86%) 1.20s (± 1.61%) -0.01s (- 0.74%) 1.18s 1.27s
Bind Time 1.23s (± 0.38%) 1.23s (± 0.62%) -0.00s (- 0.33%) 1.21s 1.24s
Check Time 4.04s (± 0.51%) 4.62s (± 0.50%) +0.58s (+14.32%) 4.55s 4.66s
Emit Time 2.75s (± 0.81%) 2.78s (± 0.67%) +0.03s (+ 1.20%) 2.73s 2.81s
Total Time 9.23s (± 0.33%) 9.83s (± 0.35%) +0.60s (+ 6.50%) 9.75s 9.88s
Angular - node (v9.0.0, x64)
Memory used 330,517k (± 0.01%) 335,441k (± 0.04%) +4,924k (+ 1.49%) 335,280k 335,919k
Parse Time 1.63s (± 0.51%) 1.63s (± 0.58%) 0.00s ( 0.00%) 1.61s 1.66s
Bind Time 1.34s (± 0.67%) 1.33s (± 0.71%) -0.00s (- 0.00%) 1.32s 1.36s
Check Time 4.28s (± 0.75%) 4.96s (± 0.51%) +0.68s (+15.93%) 4.89s 5.01s
Emit Time 5.75s (± 1.87%) 5.56s (± 1.80%) -0.19s (- 3.31%) 5.37s 5.76s
Total Time 13.00s (± 0.89%) 13.49s (± 0.91%) +0.49s (+ 3.78%) 13.27s 13.74s
Monaco - node (v9.0.0, x64)
Memory used 358,175k (± 0.01%) 367,705k (± 0.01%) +9,529k (+ 2.66%) 367,631k 367,834k
Parse Time 1.30s (± 0.56%) 1.30s (± 0.50%) +0.00s (+ 0.00%) 1.28s 1.31s
Bind Time 1.51s (± 0.74%) 1.51s (± 0.76%) -0.00s (- 0.13%) 1.49s 1.54s
Check Time 4.65s (± 0.47%) 5.09s (± 0.64%) +0.44s (+ 9.39%) 5.02s 5.15s
Emit Time 3.22s (± 0.49%) 3.22s (± 0.61%) -0.01s (- 0.19%) 3.15s 3.26s
Total Time 10.69s (± 0.14%) 11.12s (± 0.31%) +0.43s (+ 3.99%) 11.04s 11.19s
TFS - node (v9.0.0, x64)
Memory used 313,809k (± 0.01%) 324,490k (± 0.01%) +10,681k (+ 3.40%) 324,384k 324,560k
Parse Time 1.02s (± 0.71%) 1.02s (± 0.73%) -0.00s (- 0.10%) 1.00s 1.03s
Bind Time 1.20s (± 1.07%) 1.21s (± 0.46%) +0.01s (+ 0.42%) 1.20s 1.22s
Check Time 4.15s (± 1.34%) 4.77s (± 1.96%) +0.62s (+14.88%) 4.56s 4.88s
Emit Time 3.03s (± 2.63%) 2.91s (± 3.01%) -0.12s (- 3.86%) 2.79s 3.09s
Total Time 9.40s (± 0.39%) 9.91s (± 0.25%) +0.50s (+ 5.34%) 9.87s 9.97s
Angular - node (v9.0.0, x86)
Memory used 187,329k (± 0.02%) 189,943k (± 0.02%) +2,614k (+ 1.40%) 189,825k 190,017k
Parse Time 1.55s (± 0.57%) 1.55s (± 0.57%) +0.00s (+ 0.06%) 1.54s 1.58s
Bind Time 1.52s (± 1.18%) 1.51s (± 0.85%) -0.01s (- 0.59%) 1.49s 1.54s
Check Time 3.98s (± 0.63%) 4.36s (± 0.38%) +0.38s (+ 9.61%) 4.33s 4.39s
Emit Time 5.32s (± 0.68%) 5.33s (± 0.76%) +0.01s (+ 0.17%) 5.24s 5.45s
Total Time 12.37s (± 0.46%) 12.75s (± 0.35%) +0.38s (+ 3.06%) 12.65s 12.86s
Monaco - node (v9.0.0, x86)
Memory used 199,959k (± 0.02%) 203,391k (± 0.16%) +3,432k (+ 1.72%) 202,780k 203,895k
Parse Time 1.33s (± 1.15%) 1.33s (± 0.84%) -0.01s (- 0.60%) 1.31s 1.36s
Bind Time 1.36s (± 0.73%) 1.37s (± 0.85%) +0.00s (+ 0.22%) 1.35s 1.41s
Check Time 4.46s (± 0.41%) 4.90s (± 1.81%) +0.43s (+ 9.70%) 4.78s 5.13s
Emit Time 3.02s (± 0.29%) 2.98s (± 3.99%) -0.04s (- 1.32%) 2.65s 3.10s
Total Time 10.18s (± 0.35%) 10.57s (± 0.46%) +0.39s (+ 3.83%) 10.45s 10.67s
TFS - node (v9.0.0, x86)
Memory used 176,046k (± 0.03%) 180,721k (± 0.03%) +4,674k (+ 2.66%) 180,599k 180,857k
Parse Time 1.03s (± 0.48%) 1.04s (± 1.06%) +0.01s (+ 0.58%) 1.03s 1.08s
Bind Time 1.21s (± 0.73%) 1.22s (± 0.99%) +0.00s (+ 0.25%) 1.20s 1.26s
Check Time 3.84s (± 0.64%) 4.36s (± 0.81%) +0.52s (+13.56%) 4.31s 4.46s
Emit Time 2.71s (± 1.09%) 2.74s (± 0.57%) +0.03s (+ 0.96%) 2.71s 2.78s
Total Time 8.81s (± 0.47%) 9.36s (± 0.46%) +0.55s (+ 6.27%) 9.26s 9.45s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-142-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v6.5.0, x64)
  • node (v6.5.0, x86)
  • node (v8.9.0, x64)
  • node (v8.9.0, x86)
  • node (v9.0.0, x64)
  • node (v9.0.0, x86)
Scenarios
  • Angular - node (v6.5.0, x64)
  • Angular - node (v6.5.0, x86)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Angular - node (v9.0.0, x64)
  • Angular - node (v9.0.0, x86)
  • Monaco - node (v6.5.0, x64)
  • Monaco - node (v6.5.0, x86)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • Monaco - node (v9.0.0, x64)
  • Monaco - node (v9.0.0, x86)
  • TFS - node (v6.5.0, x64)
  • TFS - node (v6.5.0, x86)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • TFS - node (v9.0.0, x64)
  • TFS - node (v9.0.0, x86)
Benchmark Name Iterations
Current 31003 10
Baseline master 10

@weswigham
Copy link
Member Author

weswigham commented Apr 18, 2019

F. I think on the whole the dictionarylike-object actually performs worse than a native Map nowadays.

@weswigham weswigham force-pushed the improve-flow-reference-cacheing branch from b281007 to 11d9a60 Compare April 29, 2019 17:23
@weswigham
Copy link
Member Author

@typescript-bot perf test this - after much iteration, I've found a cache structure with minimal perf impact to the non-bad cases. We also now only cache on Assignment flow nodes.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 29, 2019

Heya @weswigham, I've started to run the perf test suite on this PR at 23e3b4e. You can monitor the build here. It should now contribute to this PR's status checks.

Update: The results are in!

@weswigham
Copy link
Member Author

Oh, also:

@typescript-bot test this
@typescript-bot run dt
@typescript-bot user test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 29, 2019

Heya @weswigham, I've started to run the parallelized Definitely Typed test suite on this PR at 23e3b4e. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 29, 2019

Heya @weswigham, I've started to run the extended test suite on this PR at 23e3b4e. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 29, 2019

Heya @weswigham, I've started to run the community code test suite on this PR at 23e3b4e. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

@weswigham
The results of the perf run you requested are in!

Here they are:

Comparison Report - master..31003

Metric master 31003 Delta Best Worst
Angular - node (v6.5.0, x64)
Memory used 341,098k (± 0.43%) 345,531k (± 0.43%) +4,433k (+ 1.30%) 343,857k 347,998k
Parse Time 1.63s (± 1.36%) 1.62s (± 1.49%) -0.00s (- 0.18%) 1.53s 1.65s
Bind Time 1.56s (± 2.01%) 1.55s (± 2.35%) -0.01s (- 0.64%) 1.48s 1.65s
Check Time 4.89s (± 0.54%) 5.01s (± 0.74%) +0.12s (+ 2.56%) 4.91s 5.08s
Emit Time 6.39s (± 1.81%) 6.40s (± 1.68%) +0.01s (+ 0.19%) 6.19s 6.65s
Total Time 14.46s (± 0.97%) 14.59s (± 0.96%) +0.12s (+ 0.86%) 14.33s 14.92s
Monaco - node (v6.5.0, x64)
Memory used 364,439k (± 0.08%) 368,330k (± 0.01%) +3,891k (+ 1.07%) 368,241k 368,368k
Parse Time 1.27s (± 0.84%) 1.27s (± 0.49%) +0.01s (+ 0.39%) 1.26s 1.28s
Bind Time 1.52s (± 0.66%) 1.52s (± 0.87%) -0.00s (- 0.33%) 1.50s 1.56s
Check Time 5.82s (± 0.92%) 6.02s (± 0.58%) +0.20s (+ 3.38%) 5.94s 6.09s
Emit Time 3.65s (± 2.11%) 3.71s (± 1.04%) +0.06s (+ 1.67%) 3.59s 3.80s
Total Time 12.27s (± 0.87%) 12.53s (± 0.53%) +0.26s (+ 2.09%) 12.37s 12.64s
TFS - node (v6.5.0, x64)
Memory used 321,072k (± 0.02%) 325,320k (± 0.01%) +4,248k (+ 1.32%) 325,222k 325,454k
Parse Time 0.98s (± 0.48%) 0.99s (± 0.83%) +0.01s (+ 0.71%) 0.97s 1.00s
Bind Time 1.27s (± 0.80%) 1.28s (± 0.70%) +0.01s (+ 0.87%) 1.26s 1.30s
Check Time 4.41s (± 0.38%) 4.61s (± 0.78%) +0.20s (+ 4.47%) 4.53s 4.68s
Emit Time 3.14s (± 0.77%) 3.11s (± 0.71%) -0.03s (- 0.92%) 3.06s 3.16s
Total Time 9.80s (± 0.32%) 9.98s (± 0.53%) +0.18s (+ 1.84%) 9.89s 10.09s
Angular - node (v6.5.0, x86)
Memory used 191,048k (± 0.01%) 193,448k (± 0.00%) +2,400k (+ 1.26%) 193,433k 193,473k
Parse Time 1.47s (± 0.98%) 1.46s (± 0.60%) -0.01s (- 0.48%) 1.45s 1.49s
Bind Time 1.52s (± 1.10%) 1.50s (± 0.81%) -0.02s (- 1.12%) 1.48s 1.53s
Check Time 4.81s (± 2.12%) 4.91s (± 2.43%) +0.10s (+ 2.10%) 4.79s 5.26s
Emit Time 6.12s (± 1.59%) 6.10s (± 1.56%) -0.02s (- 0.31%) 5.91s 6.33s
Total Time 13.91s (± 1.34%) 13.97s (± 1.49%) +0.06s (+ 0.43%) 13.73s 14.57s
Monaco - node (v6.5.0, x86)
Memory used 204,369k (± 0.00%) 206,515k (± 0.00%) +2,146k (+ 1.05%) 206,490k 206,536k
Parse Time 1.27s (± 0.76%) 1.27s (± 1.31%) +0.00s (+ 0.32%) 1.25s 1.33s
Bind Time 1.55s (± 0.71%) 1.55s (± 0.84%) +0.00s (+ 0.19%) 1.53s 1.59s
Check Time 4.65s (± 0.30%) 4.81s (± 0.68%) +0.16s (+ 3.51%) 4.75s 4.90s
Emit Time 3.22s (± 0.58%) 3.18s (± 1.05%) -0.03s (- 1.00%) 3.10s 3.26s
Total Time 10.68s (± 0.17%) 10.82s (± 0.74%) +0.14s (+ 1.26%) 10.69s 11.05s
TFS - node (v6.5.0, x86)
Memory used 180,376k (± 0.01%) 182,585k (± 0.01%) +2,209k (+ 1.22%) 182,554k 182,629k
Parse Time 0.98s (± 0.83%) 0.98s (± 0.72%) -0.00s (- 0.10%) 0.97s 0.99s
Bind Time 1.30s (± 0.90%) 1.30s (± 1.08%) +0.00s (+ 0.15%) 1.28s 1.35s
Check Time 3.90s (± 0.66%) 4.04s (± 0.42%) +0.14s (+ 3.59%) 4.01s 4.09s
Emit Time 2.56s (± 0.89%) 2.56s (± 0.79%) +0.00s (+ 0.16%) 2.53s 2.63s
Total Time 8.74s (± 0.39%) 8.89s (± 0.33%) +0.14s (+ 1.64%) 8.82s 8.94s
Angular - node (v8.9.0, x64)
Memory used 330,715k (± 0.01%) 335,222k (± 0.01%) +4,507k (+ 1.36%) 335,099k 335,271k
Parse Time 1.81s (± 0.64%) 1.80s (± 0.48%) -0.00s (- 0.17%) 1.79s 1.83s
Bind Time 1.37s (± 1.13%) 1.35s (± 0.37%) -0.02s (- 1.24%) 1.35s 1.37s
Check Time 4.61s (± 1.11%) 4.74s (± 1.31%) +0.14s (+ 2.95%) 4.62s 4.87s
Emit Time 5.94s (± 2.68%) 5.84s (± 3.24%) -0.11s (- 1.78%) 5.45s 6.12s
Total Time 13.73s (± 0.85%) 13.74s (± 1.06%) +0.01s (+ 0.07%) 13.40s 13.98s
Monaco - node (v8.9.0, x64)
Memory used 358,485k (± 0.02%) 362,396k (± 0.02%) +3,911k (+ 1.09%) 362,305k 362,560k
Parse Time 1.45s (± 0.72%) 1.45s (± 0.45%) -0.00s (- 0.07%) 1.44s 1.47s
Bind Time 1.53s (± 0.76%) 1.54s (± 1.36%) +0.01s (+ 0.52%) 1.50s 1.59s
Check Time 4.82s (± 1.57%) 4.94s (± 1.73%) +0.12s (+ 2.47%) 4.83s 5.18s
Emit Time 3.16s (± 5.18%) 3.16s (± 4.76%) -0.00s (- 0.06%) 2.81s 3.32s
Total Time 10.96s (± 0.99%) 11.08s (± 0.91%) +0.12s (+ 1.10%) 10.79s 11.24s
TFS - node (v8.9.0, x64)
Memory used 313,860k (± 0.02%) 318,026k (± 0.01%) +4,166k (+ 1.33%) 317,931k 318,090k
Parse Time 1.14s (± 0.42%) 1.14s (± 0.43%) +0.00s (+ 0.09%) 1.14s 1.16s
Bind Time 1.24s (± 0.77%) 1.24s (± 0.71%) +0.00s (+ 0.08%) 1.21s 1.25s
Check Time 4.22s (± 0.53%) 4.38s (± 0.71%) +0.16s (+ 3.75%) 4.33s 4.46s
Emit Time 3.11s (± 1.23%) 3.13s (± 0.42%) +0.02s (+ 0.61%) 3.10s 3.16s
Total Time 9.71s (± 0.46%) 9.89s (± 0.41%) +0.18s (+ 1.84%) 9.82s 10.01s
Angular - node (v8.9.0, x86)
Memory used 187,179k (± 0.02%) 189,527k (± 0.02%) +2,349k (+ 1.25%) 189,438k 189,632k
Parse Time 1.75s (± 0.78%) 1.76s (± 0.80%) +0.01s (+ 0.40%) 1.74s 1.81s
Bind Time 1.53s (± 0.85%) 1.53s (± 0.54%) +0.01s (+ 0.33%) 1.51s 1.55s
Check Time 4.29s (± 0.80%) 4.38s (± 0.80%) +0.09s (+ 2.15%) 4.33s 4.45s
Emit Time 5.66s (± 0.80%) 5.65s (± 0.76%) -0.01s (- 0.12%) 5.57s 5.76s
Total Time 13.23s (± 0.51%) 13.33s (± 0.59%) +0.10s (+ 0.72%) 13.20s 13.53s
Monaco - node (v8.9.0, x86)
Memory used 199,844k (± 0.02%) 201,963k (± 0.02%) +2,119k (+ 1.06%) 201,868k 202,044k
Parse Time 1.50s (± 0.77%) 1.52s (± 0.86%) +0.01s (+ 0.73%) 1.49s 1.55s
Bind Time 1.39s (± 0.65%) 1.40s (± 0.58%) +0.01s (+ 0.79%) 1.38s 1.42s
Check Time 4.58s (± 0.40%) 4.72s (± 0.61%) +0.14s (+ 3.10%) 4.69s 4.80s
Emit Time 3.09s (± 0.56%) 3.12s (± 0.51%) +0.02s (+ 0.74%) 3.08s 3.16s
Total Time 10.57s (± 0.31%) 10.75s (± 0.29%) +0.19s (+ 1.77%) 10.67s 10.81s
TFS - node (v8.9.0, x86)
Memory used 175,899k (± 0.02%) 178,155k (± 0.02%) +2,255k (+ 1.28%) 178,074k 178,215k
Parse Time 1.20s (± 0.92%) 1.21s (± 0.62%) +0.00s (+ 0.17%) 1.19s 1.22s
Bind Time 1.23s (± 0.74%) 1.22s (± 0.49%) -0.01s (- 0.57%) 1.21s 1.24s
Check Time 4.03s (± 0.38%) 4.16s (± 0.68%) +0.13s (+ 3.23%) 4.09s 4.23s
Emit Time 2.79s (± 1.13%) 2.78s (± 0.70%) -0.01s (- 0.39%) 2.73s 2.82s
Total Time 9.26s (± 0.44%) 9.37s (± 0.39%) +0.11s (+ 1.21%) 9.29s 9.45s
Angular - node (v9.0.0, x64)
Memory used 330,498k (± 0.03%) 334,972k (± 0.02%) +4,473k (+ 1.35%) 334,879k 335,099k
Parse Time 1.64s (± 0.46%) 1.65s (± 0.70%) +0.02s (+ 1.10%) 1.63s 1.68s
Bind Time 1.34s (± 0.68%) 1.34s (± 0.52%) +0.00s (+ 0.15%) 1.33s 1.36s
Check Time 4.37s (± 1.42%) 4.48s (± 0.49%) +0.11s (+ 2.45%) 4.42s 4.53s
Emit Time 5.76s (± 2.20%) 5.82s (± 1.04%) +0.06s (+ 1.09%) 5.70s 5.96s
Total Time 13.11s (± 0.96%) 13.29s (± 0.44%) +0.19s (+ 1.43%) 13.21s 13.48s
Monaco - node (v9.0.0, x64)
Memory used 358,253k (± 0.01%) 362,174k (± 0.01%) +3,921k (+ 1.09%) 362,083k 362,255k
Parse Time 1.29s (± 0.69%) 1.30s (± 0.85%) +0.01s (+ 0.62%) 1.29s 1.34s
Bind Time 1.51s (± 0.58%) 1.50s (± 0.50%) -0.01s (- 0.40%) 1.49s 1.52s
Check Time 4.70s (± 0.49%) 4.82s (± 0.57%) +0.12s (+ 2.55%) 4.75s 4.87s
Emit Time 3.22s (± 0.36%) 3.24s (± 0.64%) +0.02s (+ 0.65%) 3.20s 3.30s
Total Time 10.72s (± 0.25%) 10.86s (± 0.40%) +0.14s (+ 1.31%) 10.78s 10.95s
TFS - node (v9.0.0, x64)
Memory used 313,790k (± 0.01%) 318,035k (± 0.02%) +4,245k (+ 1.35%) 317,838k 318,126k
Parse Time 1.01s (± 0.57%) 1.02s (± 0.81%) +0.01s (+ 1.09%) 1.01s 1.04s
Bind Time 1.21s (± 1.33%) 1.23s (± 1.25%) +0.02s (+ 1.24%) 1.19s 1.27s
Check Time 4.28s (± 1.78%) 4.47s (± 1.49%) +0.19s (+ 4.37%) 4.28s 4.54s
Emit Time 2.96s (± 2.89%) 2.93s (± 2.59%) -0.03s (- 0.98%) 2.83s 3.13s
Total Time 9.46s (± 0.52%) 9.64s (± 0.25%) +0.18s (+ 1.94%) 9.59s 9.69s
Angular - node (v9.0.0, x86)
Memory used 187,390k (± 0.03%) 189,741k (± 0.03%) +2,351k (+ 1.25%) 189,617k 189,867k
Parse Time 1.57s (± 0.71%) 1.57s (± 0.67%) +0.01s (+ 0.51%) 1.55s 1.59s
Bind Time 1.51s (± 0.55%) 1.51s (± 0.67%) 0.00s ( 0.00%) 1.50s 1.55s
Check Time 4.05s (± 0.89%) 4.14s (± 0.67%) +0.09s (+ 2.25%) 4.09s 4.20s
Emit Time 5.34s (± 0.95%) 5.36s (± 0.74%) +0.02s (+ 0.34%) 5.27s 5.46s
Total Time 12.47s (± 0.66%) 12.59s (± 0.53%) +0.12s (+ 0.97%) 12.44s 12.75s
Monaco - node (v9.0.0, x86)
Memory used 199,927k (± 0.02%) 201,993k (± 0.02%) +2,065k (+ 1.03%) 201,887k 202,080k
Parse Time 1.33s (± 0.79%) 1.33s (± 0.73%) -0.00s (- 0.30%) 1.31s 1.35s
Bind Time 1.37s (± 0.63%) 1.37s (± 0.55%) -0.00s (- 0.15%) 1.35s 1.38s
Check Time 4.49s (± 0.51%) 4.59s (± 0.49%) +0.10s (+ 2.16%) 4.55s 4.65s
Emit Time 3.04s (± 0.55%) 3.03s (± 0.86%) -0.02s (- 0.62%) 2.97s 3.09s
Total Time 10.24s (± 0.27%) 10.31s (± 0.43%) +0.07s (+ 0.66%) 10.22s 10.41s
TFS - node (v9.0.0, x86)
Memory used 176,038k (± 0.03%) 178,291k (± 0.01%) +2,253k (+ 1.28%) 178,239k 178,369k
Parse Time 1.04s (± 0.78%) 1.04s (± 0.59%) -0.00s (- 0.10%) 1.03s 1.05s
Bind Time 1.22s (± 1.11%) 1.22s (± 0.95%) -0.00s (- 0.16%) 1.20s 1.25s
Check Time 3.93s (± 0.53%) 3.99s (± 0.34%) +0.06s (+ 1.50%) 3.96s 4.02s
Emit Time 2.70s (± 1.08%) 2.71s (± 0.63%) +0.01s (+ 0.44%) 2.68s 2.75s
Total Time 8.89s (± 0.50%) 8.96s (± 0.28%) +0.07s (+ 0.78%) 8.89s 8.99s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-142-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v6.5.0, x64)
  • node (v6.5.0, x86)
  • node (v8.9.0, x64)
  • node (v8.9.0, x86)
  • node (v9.0.0, x64)
  • node (v9.0.0, x86)
Scenarios
  • Angular - node (v6.5.0, x64)
  • Angular - node (v6.5.0, x86)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Angular - node (v9.0.0, x64)
  • Angular - node (v9.0.0, x86)
  • Monaco - node (v6.5.0, x64)
  • Monaco - node (v6.5.0, x86)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • Monaco - node (v9.0.0, x64)
  • Monaco - node (v9.0.0, x86)
  • TFS - node (v6.5.0, x64)
  • TFS - node (v6.5.0, x86)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • TFS - node (v9.0.0, x64)
  • TFS - node (v9.0.0, x86)
Benchmark Name Iterations
Current 31003 10
Baseline master 10

@weswigham
Copy link
Member Author

Neato, perf is clean, new test passes, rwc is clean, user suite matches master, and hopefully dt should match master once it's done.

@ahejlsberg just wanted to letchya know that I got a version of this working within acceptable parameters, so you should review.

@weswigham
Copy link
Member Author

Yep, the one DT failure in stompjs is in master, so this PR is clean.

@weswigham
Copy link
Member Author

@typescript-bot test this
@typescript-bot run dt
@typescript-bot user test this
@typescript-bot perf test

Gimmie some final extended approvals bot - DT and RWC should be clean, so hopefully this is all ☑

@typescript-bot
Copy link
Collaborator

typescript-bot commented May 3, 2019

Heya @weswigham, I've started to run the extended test suite on this PR at f13c0e3. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

typescript-bot commented May 3, 2019

Heya @weswigham, I've started to run the perf test suite on this PR at f13c0e3. You can monitor the build here. It should now contribute to this PR's status checks.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented May 3, 2019

Heya @weswigham, I've started to run the parallelized Definitely Typed test suite on this PR at f13c0e3. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

typescript-bot commented May 3, 2019

Heya @weswigham, I've started to run the community code test suite on this PR at f13c0e3. You can monitor the build here. It should now contribute to this PR's status checks.

@typescript-bot
Copy link
Collaborator

@weswigham
The results of the perf run you requested are in!

Here they are:

Comparison Report - master..31003

Metric master 31003 Delta Best Worst
Angular - node (v12.1.0, x64)
Memory used 313,217k (± 0.02%) 317,167k (± 0.01%) +3,951k (+ 1.26%) 317,076k 317,261k
Parse Time 1.38s (± 0.53%) 1.40s (± 0.53%) +0.01s (+ 1.09%) 1.38s 1.41s
Bind Time 0.72s (± 0.69%) 0.72s (± 0.51%) -0.00s (- 0.00%) 0.72s 0.73s
Check Time 3.97s (± 0.32%) 4.06s (± 0.46%) +0.10s (+ 2.47%) 4.03s 4.12s
Emit Time 5.15s (± 0.67%) 5.15s (± 0.68%) +0.00s (+ 0.06%) 5.07s 5.24s
Total Time 11.22s (± 0.30%) 11.34s (± 0.36%) +0.12s (+ 1.04%) 11.26s 11.47s
Monaco - node (v12.1.0, x64)
Memory used 342,083k (± 0.01%) 345,658k (± 0.02%) +3,575k (+ 1.05%) 345,552k 345,743k
Parse Time 1.18s (± 0.47%) 1.18s (± 0.70%) +0.01s (+ 0.51%) 1.17s 1.20s
Bind Time 0.67s (± 0.70%) 0.68s (± 0.74%) +0.01s (+ 0.75%) 0.67s 0.69s
Check Time 4.08s (± 0.39%) 4.19s (± 0.41%) +0.11s (+ 2.64%) 4.16s 4.24s
Emit Time 2.76s (± 0.48%) 2.78s (± 0.88%) +0.02s (+ 0.58%) 2.73s 2.84s
Total Time 8.70s (± 0.27%) 8.83s (± 0.37%) +0.13s (+ 1.49%) 8.77s 8.91s
TFS - node (v12.1.0, x64)
Memory used 298,982k (± 0.02%) 302,877k (± 0.02%) +3,895k (+ 1.30%) 302,744k 303,018k
Parse Time 0.90s (± 0.49%) 0.91s (± 0.77%) +0.01s (+ 0.78%) 0.89s 0.92s
Bind Time 0.62s (± 0.84%) 0.63s (± 1.22%) +0.01s (+ 0.97%) 0.61s 0.64s
Check Time 3.62s (± 0.39%) 3.74s (± 0.62%) +0.12s (+ 3.34%) 3.69s 3.79s
Emit Time 2.85s (± 0.89%) 2.86s (± 1.13%) +0.01s (+ 0.42%) 2.78s 2.93s
Total Time 7.99s (± 0.37%) 8.13s (± 0.52%) +0.14s (+ 1.78%) 8.04s 8.22s
Angular - node (v8.9.0, x64)
Memory used 330,744k (± 0.02%) 335,281k (± 0.01%) +4,537k (+ 1.37%) 335,221k 335,370k
Parse Time 1.77s (± 0.40%) 1.78s (± 0.50%) +0.01s (+ 0.28%) 1.76s 1.79s
Bind Time 0.79s (± 1.15%) 0.79s (± 1.29%) 0.00s ( 0.00%) 0.77s 0.81s
Check Time 4.71s (± 1.63%) 4.79s (± 1.18%) +0.08s (+ 1.66%) 4.67s 4.94s
Emit Time 5.94s (± 2.63%) 5.84s (± 3.09%) -0.10s (- 1.65%) 5.43s 6.22s
Total Time 13.21s (± 0.83%) 13.19s (± 1.31%) -0.02s (- 0.12%) 12.88s 13.56s
Monaco - node (v8.9.0, x64)
Memory used 358,800k (± 0.02%) 362,849k (± 0.01%) +4,049k (+ 1.13%) 362,750k 362,958k
Parse Time 1.43s (± 0.41%) 1.43s (± 0.58%) +0.00s (+ 0.07%) 1.42s 1.46s
Bind Time 0.91s (± 1.67%) 0.90s (± 2.05%) -0.01s (- 1.42%) 0.87s 0.93s
Check Time 4.82s (± 1.45%) 5.00s (± 1.87%) +0.17s (+ 3.61%) 4.86s 5.19s
Emit Time 3.27s (± 5.17%) 3.17s (± 6.83%) -0.09s (- 2.88%) 2.79s 3.44s
Total Time 10.44s (± 1.21%) 10.51s (± 1.42%) +0.07s (+ 0.70%) 10.21s 10.73s
TFS - node (v8.9.0, x64)
Memory used 314,194k (± 0.01%) 318,430k (± 0.01%) +4,236k (+ 1.35%) 318,339k 318,525k
Parse Time 1.13s (± 0.46%) 1.14s (± 0.60%) +0.01s (+ 0.44%) 1.12s 1.15s
Bind Time 0.67s (± 1.43%) 0.66s (± 0.61%) -0.00s (- 0.60%) 0.65s 0.67s
Check Time 4.22s (± 0.57%) 4.34s (± 0.28%) +0.12s (+ 2.87%) 4.33s 4.38s
Emit Time 3.13s (± 0.88%) 3.12s (± 0.55%) -0.01s (- 0.19%) 3.09s 3.16s
Total Time 9.14s (± 0.41%) 9.26s (± 0.23%) +0.12s (+ 1.30%) 9.23s 9.32s
Angular - node (v8.9.0, x86)
Memory used 187,378k (± 0.02%) 189,770k (± 0.02%) +2,392k (+ 1.28%) 189,710k 189,836k
Parse Time 1.71s (± 0.62%) 1.72s (± 0.54%) +0.01s (+ 0.41%) 1.70s 1.74s
Bind Time 0.93s (± 2.03%) 0.93s (± 0.88%) 0.00s ( 0.00%) 0.91s 0.94s
Check Time 4.32s (± 0.53%) 4.44s (± 0.35%) +0.11s (+ 2.61%) 4.39s 4.46s
Emit Time 5.63s (± 0.85%) 5.62s (± 0.73%) -0.02s (- 0.32%) 5.54s 5.72s
Total Time 12.60s (± 0.39%) 12.70s (± 0.22%) +0.10s (+ 0.80%) 12.63s 12.76s
Monaco - node (v8.9.0, x86)
Memory used 200,180k (± 0.02%) 202,305k (± 0.02%) +2,124k (+ 1.06%) 202,202k 202,387k
Parse Time 1.48s (± 0.57%) 1.49s (± 0.65%) +0.01s (+ 0.68%) 1.47s 1.52s
Bind Time 0.71s (± 1.15%) 0.72s (± 1.30%) +0.01s (+ 1.40%) 0.71s 0.75s
Check Time 4.65s (± 0.43%) 4.77s (± 0.57%) +0.11s (+ 2.47%) 4.72s 4.83s
Emit Time 3.08s (± 0.71%) 3.10s (± 0.51%) +0.02s (+ 0.81%) 3.06s 3.13s
Total Time 9.92s (± 0.41%) 10.08s (± 0.45%) +0.16s (+ 1.56%) 9.98s 10.18s
TFS - node (v8.9.0, x86)
Memory used 176,250k (± 0.02%) 178,441k (± 0.03%) +2,191k (+ 1.24%) 178,307k 178,533k
Parse Time 1.19s (± 1.08%) 1.19s (± 1.01%) +0.00s (+ 0.42%) 1.16s 1.22s
Bind Time 0.63s (± 1.02%) 0.63s (± 0.47%) +0.00s (+ 0.00%) 0.63s 0.64s
Check Time 4.04s (± 0.47%) 4.20s (± 0.68%) +0.16s (+ 3.96%) 4.12s 4.24s
Emit Time 2.75s (± 1.68%) 2.77s (± 0.85%) +0.02s (+ 0.73%) 2.71s 2.82s
Total Time 8.61s (± 0.56%) 8.80s (± 0.44%) +0.18s (+ 2.14%) 8.73s 8.88s
Angular - node (v9.0.0, x64)
Memory used 330,399k (± 0.02%) 334,904k (± 0.02%) +4,505k (+ 1.36%) 334,797k 334,998k
Parse Time 1.62s (± 0.59%) 1.62s (± 0.52%) +0.00s (+ 0.19%) 1.60s 1.64s
Bind Time 0.74s (± 0.95%) 0.73s (± 0.81%) -0.01s (- 0.94%) 0.72s 0.75s
Check Time 4.30s (± 0.63%) 4.40s (± 0.71%) +0.10s (+ 2.26%) 4.33s 4.48s
Emit Time 5.77s (± 2.13%) 5.62s (± 1.05%) -0.15s (- 2.53%) 5.57s 5.85s
Total Time 12.43s (± 1.00%) 12.38s (± 0.54%) -0.05s (- 0.41%) 12.29s 12.62s
Monaco - node (v9.0.0, x64)
Memory used 358,751k (± 0.02%) 362,498k (± 0.02%) +3,747k (+ 1.04%) 362,387k 362,715k
Parse Time 1.28s (± 0.45%) 1.29s (± 0.64%) +0.00s (+ 0.23%) 1.26s 1.30s
Bind Time 0.85s (± 0.53%) 0.85s (± 0.68%) +0.01s (+ 0.59%) 0.84s 0.86s
Check Time 4.68s (± 0.65%) 4.81s (± 0.40%) +0.13s (+ 2.69%) 4.78s 4.85s
Emit Time 3.29s (± 0.64%) 3.28s (± 0.45%) -0.01s (- 0.36%) 3.25s 3.31s
Total Time 10.10s (± 0.47%) 10.23s (± 0.28%) +0.13s (+ 1.29%) 10.19s 10.31s
TFS - node (v9.0.0, x64)
Memory used 314,062k (± 0.01%) 318,255k (± 0.01%) +4,192k (+ 1.33%) 318,177k 318,353k
Parse Time 1.00s (± 0.60%) 1.01s (± 0.72%) +0.00s (+ 0.30%) 0.99s 1.02s
Bind Time 0.61s (± 0.56%) 0.61s (± 1.01%) -0.00s (- 0.33%) 0.60s 0.63s
Check Time 4.16s (± 1.33%) 4.30s (± 1.70%) +0.14s (+ 3.34%) 4.20s 4.51s
Emit Time 3.03s (± 2.15%) 3.01s (± 3.07%) -0.02s (- 0.63%) 2.76s 3.12s
Total Time 8.81s (± 0.34%) 8.93s (± 0.48%) +0.12s (+ 1.37%) 8.85s 9.03s
Angular - node (v9.0.0, x86)
Memory used 187,479k (± 0.02%) 189,915k (± 0.02%) +2,436k (+ 1.30%) 189,834k 189,976k
Parse Time 1.53s (± 0.36%) 1.54s (± 0.88%) +0.01s (+ 0.72%) 1.52s 1.58s
Bind Time 0.86s (± 1.21%) 0.86s (± 0.58%) -0.01s (- 0.81%) 0.84s 0.86s
Check Time 4.03s (± 0.42%) 4.13s (± 0.85%) +0.10s (+ 2.38%) 4.06s 4.24s
Emit Time 5.36s (± 0.97%) 5.36s (± 0.38%) +0.00s (+ 0.04%) 5.32s 5.41s
Total Time 11.78s (± 0.49%) 11.88s (± 0.44%) +0.10s (+ 0.87%) 11.80s 12.05s
Monaco - node (v9.0.0, x86)
Memory used 200,207k (± 0.02%) 202,327k (± 0.03%) +2,120k (+ 1.06%) 202,184k 202,436k
Parse Time 1.30s (± 0.51%) 1.30s (± 0.54%) -0.00s (- 0.08%) 1.29s 1.32s
Bind Time 0.64s (± 0.73%) 0.64s (± 0.76%) +0.00s (+ 0.63%) 0.63s 0.65s
Check Time 4.49s (± 0.64%) 4.56s (± 0.42%) +0.07s (+ 1.54%) 4.53s 4.61s
Emit Time 3.01s (± 0.63%) 3.02s (± 0.57%) +0.01s (+ 0.40%) 2.99s 3.07s
Total Time 9.43s (± 0.46%) 9.52s (± 0.20%) +0.09s (+ 0.91%) 9.49s 9.56s
TFS - node (v9.0.0, x86)
Memory used 176,328k (± 0.02%) 178,516k (± 0.03%) +2,188k (+ 1.24%) 178,400k 178,652k
Parse Time 1.02s (± 0.89%) 1.03s (± 0.64%) +0.01s (+ 0.88%) 1.02s 1.04s
Bind Time 0.57s (± 0.83%) 0.57s (± 0.86%) +0.00s (+ 0.17%) 0.56s 0.58s
Check Time 3.94s (± 0.97%) 4.02s (± 0.58%) +0.08s (+ 2.03%) 3.95s 4.06s
Emit Time 2.69s (± 0.67%) 2.70s (± 1.75%) +0.01s (+ 0.19%) 2.62s 2.86s
Total Time 8.23s (± 0.70%) 8.32s (± 0.68%) +0.09s (+ 1.13%) 8.19s 8.47s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-142-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v12.1.0, x64)
  • node (v8.9.0, x64)
  • node (v8.9.0, x86)
  • node (v9.0.0, x64)
  • node (v9.0.0, x86)
Scenarios
  • Angular - node (v12.1.0, x64)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Angular - node (v9.0.0, x64)
  • Angular - node (v9.0.0, x86)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • Monaco - node (v9.0.0, x64)
  • Monaco - node (v9.0.0, x86)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • TFS - node (v9.0.0, x64)
  • TFS - node (v9.0.0, x86)
Benchmark Name Iterations
Current 31003 10
Baseline master 10

@weswigham
Copy link
Member Author

All ✔ on both the functional and perf suites. @ahejlsberg I would love a once over so I can merge this.

@ahejlsberg
Copy link
Member

Did you consider making the cache for each assignment node a single key and FlowType instead of a full map? It looks to me like we'll rarely if ever cache more than a single key and type. And even then, if we just cache the most recent key and type we'll just recompute if need be. I did a quick experiment of replacing the map with a single key/type store, and it passes the tests just fine. And I would imagine it performs much better. I created a branch for the experiment here.

@weswigham
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented May 8, 2019

Heya @weswigham, I've started to run the perf test suite on this PR at 5fec688. You can monitor the build here. It should now contribute to this PR's status checks.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@weswigham
The results of the perf run you requested are in!

Here they are:

Comparison Report - master..31003

Metric master 31003 Delta Best Worst
Angular - node (v12.1.0, x64)
Memory used 313,253k (± 0.02%) 314,998k (± 0.02%) +1,745k (+ 0.56%) 314,876k 315,117k
Parse Time 1.39s (± 0.59%) 1.39s (± 0.94%) -0.01s (- 0.57%) 1.36s 1.42s
Bind Time 0.73s (± 0.65%) 0.73s (± 0.68%) -0.00s (- 0.14%) 0.72s 0.74s
Check Time 3.99s (± 0.62%) 4.04s (± 0.38%) +0.05s (+ 1.18%) 4.01s 4.07s
Emit Time 5.14s (± 0.52%) 5.18s (± 0.54%) +0.04s (+ 0.74%) 5.11s 5.24s
Total Time 11.25s (± 0.37%) 11.33s (± 0.36%) +0.08s (+ 0.72%) 11.23s 11.40s
Monaco - node (v12.1.0, x64)
Memory used 342,082k (± 0.01%) 343,751k (± 0.01%) +1,669k (+ 0.49%) 343,684k 343,845k
Parse Time 1.18s (± 0.68%) 1.17s (± 0.57%) -0.01s (- 0.76%) 1.16s 1.19s
Bind Time 0.67s (± 0.54%) 0.67s (± 0.96%) -0.00s (- 0.30%) 0.66s 0.69s
Check Time 4.08s (± 0.46%) 4.15s (± 0.58%) +0.07s (+ 1.82%) 4.09s 4.20s
Emit Time 2.75s (± 0.53%) 2.75s (± 0.52%) +0.00s (+ 0.04%) 2.73s 2.79s
Total Time 8.68s (± 0.31%) 8.75s (± 0.39%) +0.07s (+ 0.77%) 8.69s 8.83s
TFS - node (v12.1.0, x64)
Memory used 298,990k (± 0.01%) 300,799k (± 0.02%) +1,809k (+ 0.61%) 300,707k 300,896k
Parse Time 0.90s (± 0.90%) 0.90s (± 0.83%) -0.00s (- 0.33%) 0.88s 0.92s
Bind Time 0.62s (± 1.08%) 0.62s (± 0.84%) +0.00s (+ 0.65%) 0.61s 0.63s
Check Time 3.63s (± 0.32%) 3.73s (± 0.48%) +0.10s (+ 2.67%) 3.68s 3.77s
Emit Time 2.86s (± 0.55%) 2.86s (± 0.55%) +0.00s (+ 0.18%) 2.83s 2.90s
Total Time 8.01s (± 0.25%) 8.11s (± 0.39%) +0.10s (+ 1.25%) 8.02s 8.18s
Angular - node (v8.9.0, x64)
Memory used 330,806k (± 0.01%) 332,893k (± 0.02%) +2,087k (+ 0.63%) 332,755k 332,987k
Parse Time 1.78s (± 0.32%) 1.78s (± 0.52%) -0.00s (- 0.11%) 1.76s 1.80s
Bind Time 0.78s (± 1.13%) 0.79s (± 1.07%) +0.01s (+ 0.77%) 0.77s 0.81s
Check Time 4.65s (± 1.67%) 4.77s (± 1.26%) +0.12s (+ 2.49%) 4.64s 4.87s
Emit Time 5.90s (± 2.54%) 5.74s (± 2.81%) -0.17s (- 2.81%) 5.43s 6.20s
Total Time 13.11s (± 0.65%) 13.07s (± 1.02%) -0.04s (- 0.34%) 12.81s 13.47s
Monaco - node (v8.9.0, x64)
Memory used 358,823k (± 0.02%) 360,893k (± 0.02%) +2,069k (+ 0.58%) 360,701k 361,048k
Parse Time 1.43s (± 0.33%) 1.43s (± 0.59%) -0.00s (- 0.14%) 1.41s 1.45s
Bind Time 0.89s (± 2.01%) 0.89s (± 2.14%) 0.00s ( 0.00%) 0.86s 0.93s
Check Time 4.90s (± 1.59%) 4.99s (± 1.92%) +0.09s (+ 1.86%) 4.82s 5.15s
Emit Time 3.12s (± 7.23%) 3.13s (± 6.90%) +0.01s (+ 0.35%) 2.80s 3.44s
Total Time 10.34s (± 1.63%) 10.44s (± 1.38%) +0.10s (+ 0.95%) 10.18s 10.67s
TFS - node (v8.9.0, x64)
Memory used 314,165k (± 0.01%) 316,246k (± 0.02%) +2,081k (+ 0.66%) 316,094k 316,405k
Parse Time 1.14s (± 0.73%) 1.13s (± 0.33%) -0.00s (- 0.09%) 1.13s 1.14s
Bind Time 0.66s (± 1.33%) 0.66s (± 1.01%) -0.00s (- 0.45%) 0.65s 0.68s
Check Time 4.22s (± 0.64%) 4.33s (± 0.60%) +0.11s (+ 2.66%) 4.26s 4.39s
Emit Time 3.12s (± 0.56%) 3.14s (± 0.47%) +0.02s (+ 0.71%) 3.10s 3.16s
Total Time 9.14s (± 0.47%) 9.26s (± 0.37%) +0.13s (+ 1.40%) 9.15s 9.31s
Angular - node (v8.9.0, x86)
Memory used 187,401k (± 0.02%) 188,534k (± 0.02%) +1,133k (+ 0.60%) 188,438k 188,606k
Parse Time 1.72s (± 0.64%) 1.72s (± 0.76%) -0.00s (- 0.06%) 1.70s 1.75s
Bind Time 0.94s (± 0.88%) 0.93s (± 0.70%) -0.01s (- 0.85%) 0.91s 0.94s
Check Time 4.32s (± 0.67%) 4.44s (± 0.64%) +0.12s (+ 2.80%) 4.39s 4.51s
Emit Time 5.60s (± 1.43%) 5.67s (± 1.27%) +0.08s (+ 1.36%) 5.51s 5.81s
Total Time 12.57s (± 0.79%) 12.76s (± 0.59%) +0.19s (+ 1.48%) 12.59s 12.90s
Monaco - node (v8.9.0, x86)
Memory used 200,235k (± 0.01%) 201,296k (± 0.02%) +1,062k (+ 0.53%) 201,217k 201,396k
Parse Time 1.49s (± 0.49%) 1.48s (± 0.64%) -0.01s (- 0.60%) 1.47s 1.50s
Bind Time 0.71s (± 0.84%) 0.71s (± 0.84%) 0.00s ( 0.00%) 0.70s 0.73s
Check Time 4.66s (± 0.87%) 4.75s (± 0.48%) +0.08s (+ 1.78%) 4.69s 4.78s
Emit Time 3.08s (± 0.50%) 3.08s (± 0.49%) +0.00s (+ 0.06%) 3.04s 3.11s
Total Time 9.95s (± 0.59%) 10.02s (± 0.24%) +0.07s (+ 0.74%) 9.97s 10.06s
TFS - node (v8.9.0, x86)
Memory used 176,249k (± 0.02%) 177,390k (± 0.02%) +1,141k (+ 0.65%) 177,272k 177,451k
Parse Time 1.18s (± 0.59%) 1.18s (± 0.83%) +0.00s (+ 0.08%) 1.16s 1.21s
Bind Time 0.63s (± 0.64%) 0.62s (± 0.79%) -0.00s (- 0.79%) 0.61s 0.63s
Check Time 4.04s (± 0.66%) 4.14s (± 0.55%) +0.10s (+ 2.52%) 4.09s 4.19s
Emit Time 2.73s (± 1.13%) 2.76s (± 1.18%) +0.03s (+ 0.95%) 2.64s 2.79s
Total Time 8.58s (± 0.47%) 8.71s (± 0.41%) +0.13s (+ 1.49%) 8.60s 8.79s
Angular - node (v9.0.0, x64)
Memory used 330,479k (± 0.02%) 332,537k (± 0.03%) +2,058k (+ 0.62%) 332,311k 332,713k
Parse Time 1.62s (± 0.76%) 1.62s (± 0.30%) -0.01s (- 0.37%) 1.61s 1.63s
Bind Time 0.74s (± 0.79%) 0.74s (± 0.40%) +0.00s (+ 0.14%) 0.73s 0.74s
Check Time 4.30s (± 0.58%) 4.38s (± 0.55%) +0.08s (+ 1.93%) 4.33s 4.44s
Emit Time 5.78s (± 1.61%) 5.60s (± 0.73%) -0.18s (- 3.08%) 5.53s 5.70s
Total Time 12.44s (± 0.82%) 12.34s (± 0.39%) -0.10s (- 0.80%) 12.26s 12.48s
Monaco - node (v9.0.0, x64)
Memory used 358,741k (± 0.03%) 360,592k (± 0.02%) +1,851k (+ 0.52%) 360,402k 360,818k
Parse Time 1.28s (± 0.55%) 1.28s (± 0.43%) +0.00s (+ 0.23%) 1.27s 1.29s
Bind Time 0.85s (± 0.99%) 0.85s (± 0.65%) +0.00s (+ 0.12%) 0.84s 0.87s
Check Time 4.67s (± 0.51%) 4.77s (± 0.56%) +0.10s (+ 2.10%) 4.71s 4.84s
Emit Time 3.28s (± 0.26%) 3.28s (± 0.59%) -0.00s (- 0.06%) 3.24s 3.33s
Total Time 10.09s (± 0.27%) 10.19s (± 0.43%) +0.10s (+ 0.99%) 10.09s 10.30s
TFS - node (v9.0.0, x64)
Memory used 314,051k (± 0.02%) 316,071k (± 0.02%) +2,020k (+ 0.64%) 315,963k 316,181k
Parse Time 1.01s (± 0.74%) 1.01s (± 0.69%) -0.00s (- 0.10%) 1.00s 1.03s
Bind Time 0.61s (± 0.97%) 0.61s (± 1.35%) 0.00s ( 0.00%) 0.59s 0.63s
Check Time 4.15s (± 0.60%) 4.29s (± 1.61%) +0.14s (+ 3.45%) 4.20s 4.49s
Emit Time 3.10s (± 1.35%) 3.04s (± 2.68%) -0.05s (- 1.68%) 2.82s 3.13s
Total Time 8.87s (± 0.35%) 8.96s (± 0.53%) +0.09s (+ 0.98%) 8.86s 9.07s
Angular - node (v9.0.0, x86)
Memory used 187,510k (± 0.02%) 188,699k (± 0.03%) +1,188k (+ 0.63%) 188,586k 188,851k
Parse Time 1.53s (± 0.55%) 1.54s (± 0.84%) +0.00s (+ 0.33%) 1.51s 1.57s
Bind Time 0.86s (± 1.12%) 0.86s (± 1.17%) -0.00s (- 0.23%) 0.84s 0.88s
Check Time 4.02s (± 0.68%) 4.09s (± 0.55%) +0.07s (+ 1.77%) 4.05s 4.15s
Emit Time 5.35s (± 0.90%) 5.38s (± 0.65%) +0.03s (+ 0.56%) 5.30s 5.49s
Total Time 11.76s (± 0.49%) 11.86s (± 0.38%) +0.10s (+ 0.86%) 11.77s 11.93s
Monaco - node (v9.0.0, x86)
Memory used 200,251k (± 0.03%) 201,335k (± 0.02%) +1,084k (+ 0.54%) 201,244k 201,425k
Parse Time 1.31s (± 1.32%) 1.31s (± 0.63%) -0.00s (- 0.31%) 1.28s 1.32s
Bind Time 0.65s (± 0.58%) 0.64s (± 0.47%) -0.01s (- 1.09%) 0.63s 0.64s
Check Time 4.51s (± 0.72%) 4.56s (± 0.58%) +0.05s (+ 1.11%) 4.49s 4.61s
Emit Time 3.01s (± 0.83%) 3.01s (± 0.86%) -0.00s (- 0.07%) 2.96s 3.08s
Total Time 9.47s (± 0.62%) 9.51s (± 0.43%) +0.04s (+ 0.42%) 9.40s 9.58s
TFS - node (v9.0.0, x86)
Memory used 176,307k (± 0.03%) 177,446k (± 0.02%) +1,139k (+ 0.65%) 177,356k 177,493k
Parse Time 1.02s (± 0.56%) 1.03s (± 0.97%) +0.01s (+ 0.98%) 1.01s 1.06s
Bind Time 0.57s (± 0.78%) 0.58s (± 2.02%) +0.01s (+ 1.57%) 0.57s 0.62s
Check Time 3.91s (± 0.52%) 3.99s (± 0.61%) +0.07s (+ 1.89%) 3.93s 4.04s
Emit Time 2.70s (± 1.17%) 2.70s (± 1.20%) +0.00s (+ 0.15%) 2.62s 2.81s
Total Time 8.21s (± 0.47%) 8.30s (± 0.62%) +0.10s (+ 1.19%) 8.19s 8.45s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-142-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v12.1.0, x64)
  • node (v8.9.0, x64)
  • node (v8.9.0, x86)
  • node (v9.0.0, x64)
  • node (v9.0.0, x86)
Scenarios
  • Angular - node (v12.1.0, x64)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Angular - node (v9.0.0, x64)
  • Angular - node (v9.0.0, x86)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • Monaco - node (v9.0.0, x64)
  • Monaco - node (v9.0.0, x86)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • TFS - node (v9.0.0, x64)
  • TFS - node (v9.0.0, x86)
Benchmark Name Iterations
Current 31003 10
Baseline master 10

@weswigham weswigham merged commit d8f2702 into microsoft:master May 10, 2019
@weswigham weswigham deleted the improve-flow-reference-cacheing branch May 10, 2019 18:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Extremely slow javascript compile (small file)
4 participants