Skip to content
New issue

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

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

Already on GitHub? # to your account

feat(#45195) Improve perf of unions with many primitives #45220

Merged
merged 1 commit into from
Oct 12, 2021

Conversation

ypresto
Copy link
Contributor

@ypresto ypresto commented Jul 28, 2021

Fixes #45195

@typescript-bot typescript-bot added the For Backlog Bug PRs that fix a backlog bug label Jul 28, 2021
@DanielRosenwasser
Copy link
Member

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 28, 2021

Heya @DanielRosenwasser, I've started to run the perf test suite on this PR at 603f4dc. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - main..45220

Metric main 45220 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 347,541k (± 0.03%) 347,324k (± 0.03%) -217k (- 0.06%) 347,107k 347,492k
Parse Time 1.88s (± 0.46%) 1.88s (± 0.69%) +0.00s (+ 0.11%) 1.86s 1.93s
Bind Time 0.86s (± 0.52%) 0.86s (± 0.46%) +0.00s (+ 0.35%) 0.85s 0.87s
Check Time 5.34s (± 0.39%) 5.35s (± 0.62%) +0.01s (+ 0.28%) 5.28s 5.44s
Emit Time 5.82s (± 0.47%) 5.83s (± 0.72%) +0.02s (+ 0.28%) 5.77s 5.94s
Total Time 13.89s (± 0.21%) 13.93s (± 0.41%) +0.03s (+ 0.24%) 13.83s 14.05s
Compiler-Unions - node (v10.16.3, x64)
Memory used 203,318k (± 0.03%) 203,402k (± 0.03%) +85k (+ 0.04%) 203,269k 203,497k
Parse Time 0.79s (± 0.60%) 0.79s (± 0.96%) -0.00s (- 0.13%) 0.77s 0.80s
Bind Time 0.53s (± 1.45%) 0.52s (± 0.94%) -0.00s (- 0.19%) 0.51s 0.53s
Check Time 7.77s (± 0.42%) 7.79s (± 0.56%) +0.02s (+ 0.21%) 7.67s 7.88s
Emit Time 2.44s (± 0.83%) 2.43s (± 0.76%) -0.01s (- 0.25%) 2.39s 2.48s
Total Time 11.51s (± 0.40%) 11.53s (± 0.26%) +0.01s (+ 0.11%) 11.46s 11.60s
Monaco - node (v10.16.3, x64)
Memory used 340,616k (± 0.04%) 340,519k (± 0.02%) -97k (- 0.03%) 340,355k 340,611k
Parse Time 1.47s (± 0.48%) 1.45s (± 0.83%) -0.02s (- 1.29%) 1.42s 1.47s
Bind Time 0.74s (± 0.64%) 0.75s (± 0.64%) +0.00s (+ 0.54%) 0.74s 0.76s
Check Time 5.41s (± 0.68%) 5.39s (± 0.72%) -0.02s (- 0.41%) 5.27s 5.45s
Emit Time 3.16s (± 0.60%) 3.18s (± 0.85%) +0.02s (+ 0.63%) 3.13s 3.24s
Total Time 10.78s (± 0.48%) 10.76s (± 0.52%) -0.02s (- 0.17%) 10.62s 10.89s
TFS - node (v10.16.3, x64)
Memory used 303,972k (± 0.02%) 304,035k (± 0.03%) +64k (+ 0.02%) 303,829k 304,276k
Parse Time 1.18s (± 0.38%) 1.18s (± 0.57%) +0.00s (+ 0.17%) 1.17s 1.20s
Bind Time 0.71s (± 1.03%) 0.71s (± 1.05%) +0.01s (+ 0.71%) 0.70s 0.73s
Check Time 4.88s (± 0.41%) 4.91s (± 0.41%) +0.03s (+ 0.57%) 4.88s 4.96s
Emit Time 3.30s (± 1.31%) 3.31s (± 1.54%) +0.02s (+ 0.49%) 3.22s 3.44s
Total Time 10.07s (± 0.46%) 10.12s (± 0.54%) +0.05s (+ 0.49%) 10.01s 10.23s
material-ui - node (v10.16.3, x64)
Memory used 469,676k (± 0.01%) 468,402k (± 0.02%) -1,274k (- 0.27%) 468,232k 468,507k
Parse Time 1.73s (± 0.50%) 1.72s (± 0.29%) -0.00s (- 0.23%) 1.71s 1.73s
Bind Time 0.67s (± 0.55%) 0.66s (± 0.51%) -0.00s (- 0.45%) 0.66s 0.67s
Check Time 14.18s (± 0.47%) 14.08s (± 0.26%) -0.10s (- 0.71%) 14.01s 14.18s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.58s (± 0.39%) 16.47s (± 0.24%) -0.11s (- 0.65%) 16.38s 16.57s
Angular - node (v12.1.0, x64)
Memory used 325,473k (± 0.08%) 325,183k (± 0.11%) -289k (- 0.09%) 324,205k 325,620k
Parse Time 1.85s (± 0.48%) 1.85s (± 0.63%) -0.00s (- 0.16%) 1.82s 1.87s
Bind Time 0.84s (± 0.35%) 0.84s (± 0.66%) -0.00s (- 0.00%) 0.83s 0.85s
Check Time 5.18s (± 0.51%) 5.19s (± 0.82%) +0.01s (+ 0.29%) 5.14s 5.31s
Emit Time 6.04s (± 0.43%) 6.06s (± 0.87%) +0.02s (+ 0.33%) 5.99s 6.22s
Total Time 13.91s (± 0.34%) 13.94s (± 0.62%) +0.03s (+ 0.19%) 13.82s 14.20s
Compiler-Unions - node (v12.1.0, x64)
Memory used 190,627k (± 0.11%) 190,704k (± 0.14%) +77k (+ 0.04%) 189,993k 191,069k
Parse Time 0.77s (± 0.77%) 0.77s (± 0.84%) -0.00s (- 0.39%) 0.76s 0.79s
Bind Time 0.54s (± 0.92%) 0.53s (± 1.09%) -0.00s (- 0.56%) 0.52s 0.55s
Check Time 7.28s (± 0.41%) 7.32s (± 0.44%) +0.04s (+ 0.52%) 7.24s 7.42s
Emit Time 2.44s (± 0.66%) 2.42s (± 1.10%) -0.02s (- 0.82%) 2.39s 2.49s
Total Time 11.04s (± 0.32%) 11.05s (± 0.45%) +0.01s (+ 0.07%) 10.94s 11.19s
Monaco - node (v12.1.0, x64)
Memory used 323,687k (± 0.02%) 323,716k (± 0.03%) +29k (+ 0.01%) 323,599k 323,966k
Parse Time 1.42s (± 0.49%) 1.43s (± 0.85%) +0.01s (+ 0.49%) 1.40s 1.46s
Bind Time 0.72s (± 1.05%) 0.72s (± 0.65%) -0.01s (- 0.69%) 0.71s 0.73s
Check Time 5.23s (± 0.50%) 5.24s (± 0.45%) +0.01s (+ 0.19%) 5.21s 5.31s
Emit Time 3.18s (± 1.15%) 3.18s (± 0.46%) -0.00s (- 0.06%) 3.15s 3.22s
Total Time 10.55s (± 0.51%) 10.57s (± 0.29%) +0.01s (+ 0.12%) 10.49s 10.64s
TFS - node (v12.1.0, x64)
Memory used 288,668k (± 0.02%) 288,660k (± 0.01%) -8k (- 0.00%) 288,576k 288,777k
Parse Time 1.20s (± 0.85%) 1.20s (± 0.78%) -0.00s (- 0.08%) 1.18s 1.22s
Bind Time 0.70s (± 0.53%) 0.70s (± 0.83%) +0.00s (+ 0.29%) 0.69s 0.71s
Check Time 4.84s (± 0.72%) 4.83s (± 0.47%) -0.01s (- 0.17%) 4.77s 4.87s
Emit Time 3.37s (± 0.33%) 3.36s (± 0.78%) -0.01s (- 0.33%) 3.30s 3.43s
Total Time 10.11s (± 0.34%) 10.09s (± 0.40%) -0.02s (- 0.22%) 10.00s 10.16s
material-ui - node (v12.1.0, x64)
Memory used 448,428k (± 0.02%) 447,179k (± 0.01%) -1,249k (- 0.28%) 447,105k 447,286k
Parse Time 1.72s (± 0.55%) 1.72s (± 0.65%) +0.00s (+ 0.00%) 1.69s 1.74s
Bind Time 0.65s (± 0.92%) 0.65s (± 0.69%) +0.00s (+ 0.31%) 0.64s 0.66s
Check Time 12.67s (± 0.45%) 12.71s (± 0.60%) +0.04s (+ 0.31%) 12.53s 12.85s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.04s (± 0.36%) 15.07s (± 0.57%) +0.04s (+ 0.26%) 14.88s 15.24s
Angular - node (v14.15.1, x64)
Memory used 324,155k (± 0.01%) 323,936k (± 0.01%) -219k (- 0.07%) 323,889k 323,962k
Parse Time 1.87s (± 0.55%) 1.87s (± 0.79%) +0.00s (+ 0.21%) 1.85s 1.92s
Bind Time 0.89s (± 0.62%) 0.89s (± 0.37%) -0.00s (- 0.22%) 0.88s 0.90s
Check Time 5.21s (± 0.29%) 5.20s (± 0.25%) -0.00s (- 0.08%) 5.17s 5.23s
Emit Time 6.12s (± 0.77%) 6.15s (± 0.54%) +0.03s (+ 0.54%) 6.08s 6.24s
Total Time 14.09s (± 0.43%) 14.11s (± 0.36%) +0.03s (+ 0.20%) 14.01s 14.26s
Compiler-Unions - node (v14.15.1, x64)
Memory used 190,799k (± 0.61%) 190,487k (± 0.56%) -312k (- 0.16%) 189,504k 192,705k
Parse Time 0.80s (± 0.37%) 0.80s (± 0.72%) +0.00s (+ 0.12%) 0.79s 0.82s
Bind Time 0.56s (± 0.79%) 0.56s (± 0.40%) -0.00s (- 0.53%) 0.55s 0.56s
Check Time 7.43s (± 0.45%) 7.42s (± 0.54%) -0.00s (- 0.07%) 7.36s 7.54s
Emit Time 2.41s (± 1.39%) 2.44s (± 1.46%) +0.02s (+ 0.99%) 2.40s 2.57s
Total Time 11.21s (± 0.39%) 11.23s (± 0.51%) +0.02s (+ 0.17%) 11.13s 11.36s
Monaco - node (v14.15.1, x64)
Memory used 322,493k (± 0.00%) 322,504k (± 0.00%) +11k (+ 0.00%) 322,482k 322,543k
Parse Time 1.49s (± 0.57%) 1.48s (± 0.50%) -0.01s (- 0.54%) 1.47s 1.50s
Bind Time 0.75s (± 0.63%) 0.75s (± 0.77%) +0.00s (+ 0.40%) 0.74s 0.77s
Check Time 5.19s (± 0.50%) 5.17s (± 0.50%) -0.02s (- 0.39%) 5.12s 5.21s
Emit Time 3.21s (± 0.67%) 3.21s (± 0.57%) -0.00s (- 0.12%) 3.17s 3.25s
Total Time 10.65s (± 0.36%) 10.62s (± 0.31%) -0.03s (- 0.26%) 10.54s 10.67s
TFS - node (v14.15.1, x64)
Memory used 287,672k (± 0.01%) 287,663k (± 0.00%) -9k (- 0.00%) 287,638k 287,686k
Parse Time 1.25s (± 1.26%) 1.27s (± 2.11%) +0.02s (+ 1.76%) 1.22s 1.35s
Bind Time 0.72s (± 1.38%) 0.73s (± 3.07%) +0.01s (+ 1.24%) 0.71s 0.82s
Check Time 4.83s (± 0.40%) 4.85s (± 0.44%) +0.02s (+ 0.41%) 4.81s 4.91s
Emit Time 3.45s (± 0.88%) 3.45s (± 0.73%) -0.00s (- 0.09%) 3.40s 3.51s
Total Time 10.25s (± 0.41%) 10.30s (± 0.43%) +0.05s (+ 0.48%) 10.21s 10.41s
material-ui - node (v14.15.1, x64)
Memory used 446,836k (± 0.01%) 445,489k (± 0.06%) -1,347k (- 0.30%) 444,386k 445,652k
Parse Time 1.75s (± 0.25%) 1.75s (± 0.38%) +0.01s (+ 0.29%) 1.74s 1.77s
Bind Time 0.69s (± 0.87%) 0.69s (± 0.83%) +0.00s (+ 0.58%) 0.68s 0.70s
Check Time 12.90s (± 1.31%) 12.81s (± 0.58%) -0.09s (- 0.73%) 12.68s 13.05s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.34s (± 1.11%) 15.25s (± 0.52%) -0.09s (- 0.57%) 15.12s 15.52s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-206-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v10.16.3, x64)
  • Compiler-Unions - node (v12.1.0, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v14.15.1, x64)
Benchmark Name Iterations
Current 45220 10
Baseline main 10

Developer Information:

Download Benchmark

@DanielRosenwasser
Copy link
Member

Looks like there's no change in full type-checking time. The change might still be good for end-users though and specifically in editing scenarios.

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.

Your investigation was very impressive! Thanks for doing this!

@ypresto ypresto force-pushed the perf-large-primitive-union branch 2 times, most recently from 660a061 to b5ca222 Compare July 29, 2021 13:15
@ypresto
Copy link
Contributor Author

ypresto commented Jul 29, 2021

oops, missing semicolon

@ypresto ypresto marked this pull request as ready for review July 29, 2021 13:40
Copy link
Member

@ahejlsberg ahejlsberg left a comment

Choose a reason for hiding this comment

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

Thanks for researching this. I think the change can be made shorter, but otherwise it's a good addition.

@ypresto ypresto force-pushed the perf-large-primitive-union branch from b5ca222 to 2d65c9b Compare August 3, 2021 08:00
@ypresto
Copy link
Contributor Author

ypresto commented Oct 12, 2021

Hello! Please let me know which milestone will this land to, when you know. Thank you. 😀

@DanielRosenwasser
Copy link
Member

@typescript-bot perf test this faster

Just to make sure there's been no odd changes in the last few months.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Oct 12, 2021

Heya @DanielRosenwasser, I've started to run the perf test suite on this PR at 2d65c9b. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Oct 12, 2021

Heya @DanielRosenwasser, I've started to run the abridged perf test suite on this PR at 2d65c9b. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - main..45220

Metric main 45220 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 354,234k (± 0.02%) 354,057k (± 0.02%) -177k (- 0.05%) 353,831k 354,174k
Parse Time 1.94s (± 0.51%) 1.95s (± 0.51%) +0.00s (+ 0.26%) 1.92s 1.97s
Bind Time 0.84s (± 0.97%) 0.84s (± 0.41%) -0.00s (- 0.36%) 0.83s 0.84s
Check Time 5.44s (± 0.44%) 5.46s (± 0.44%) +0.01s (+ 0.26%) 5.41s 5.52s
Emit Time 5.83s (± 0.49%) 5.83s (± 0.61%) -0.01s (- 0.10%) 5.76s 5.91s
Total Time 14.05s (± 0.33%) 14.07s (± 0.36%) +0.02s (+ 0.11%) 13.93s 14.18s
Compiler-Unions - node (v10.16.3, x64)
Memory used 203,849k (± 0.03%) 203,869k (± 0.03%) +20k (+ 0.01%) 203,743k 203,962k
Parse Time 0.79s (± 0.85%) 0.79s (± 1.22%) +0.00s (+ 0.25%) 0.77s 0.82s
Bind Time 0.52s (± 1.40%) 0.52s (± 1.12%) -0.00s (- 0.19%) 0.50s 0.53s
Check Time 7.89s (± 0.61%) 7.92s (± 0.52%) +0.03s (+ 0.38%) 7.86s 8.05s
Emit Time 2.43s (± 0.86%) 2.44s (± 0.89%) +0.01s (+ 0.54%) 2.40s 2.48s
Total Time 11.62s (± 0.42%) 11.66s (± 0.28%) +0.04s (+ 0.36%) 11.61s 11.75s
Monaco - node (v10.16.3, x64)
Memory used 342,085k (± 0.02%) 342,104k (± 0.01%) +18k (+ 0.01%) 341,985k 342,209k
Parse Time 1.48s (± 0.45%) 1.49s (± 0.51%) +0.00s (+ 0.13%) 1.47s 1.50s
Bind Time 0.75s (± 0.64%) 0.74s (± 0.49%) -0.00s (- 0.40%) 0.74s 0.75s
Check Time 5.45s (± 0.34%) 5.43s (± 0.78%) -0.02s (- 0.40%) 5.35s 5.51s
Emit Time 3.17s (± 0.71%) 3.18s (± 0.69%) +0.02s (+ 0.51%) 3.11s 3.22s
Total Time 10.84s (± 0.26%) 10.84s (± 0.39%) -0.00s (- 0.05%) 10.75s 10.93s
TFS - node (v10.16.3, x64)
Memory used 304,787k (± 0.03%) 304,765k (± 0.01%) -23k (- 0.01%) 304,649k 304,855k
Parse Time 1.20s (± 0.39%) 1.19s (± 0.50%) -0.00s (- 0.42%) 1.18s 1.21s
Bind Time 0.71s (± 0.87%) 0.71s (± 0.56%) -0.00s (- 0.28%) 0.70s 0.72s
Check Time 4.97s (± 0.60%) 4.98s (± 0.61%) +0.01s (+ 0.20%) 4.92s 5.05s
Emit Time 3.33s (± 0.99%) 3.35s (± 0.86%) +0.02s (+ 0.57%) 3.32s 3.46s
Total Time 10.21s (± 0.50%) 10.23s (± 0.38%) +0.02s (+ 0.21%) 10.15s 10.34s
material-ui - node (v10.16.3, x64)
Memory used 472,375k (± 0.01%) 471,040k (± 0.01%) -1,335k (- 0.28%) 470,919k 471,163k
Parse Time 1.77s (± 0.50%) 1.77s (± 0.65%) -0.00s (- 0.00%) 1.75s 1.80s
Bind Time 0.66s (± 0.72%) 0.66s (± 1.17%) +0.00s (+ 0.61%) 0.65s 0.68s
Check Time 14.47s (± 0.38%) 14.38s (± 0.44%) -0.09s (- 0.59%) 14.24s 14.55s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.90s (± 0.32%) 16.82s (± 0.39%) -0.08s (- 0.47%) 16.67s 16.97s
Angular - node (v12.1.0, x64)
Memory used 332,092k (± 0.02%) 331,618k (± 0.13%) -474k (- 0.14%) 329,919k 332,092k
Parse Time 1.93s (± 0.70%) 1.93s (± 0.75%) +0.00s (+ 0.05%) 1.91s 1.98s
Bind Time 0.81s (± 0.86%) 0.81s (± 1.30%) +0.00s (+ 0.37%) 0.80s 0.84s
Check Time 5.28s (± 0.37%) 5.27s (± 1.30%) -0.02s (- 0.34%) 5.05s 5.45s
Emit Time 6.10s (± 0.63%) 6.04s (± 1.74%) -0.06s (- 0.93%) 5.66s 6.22s
Total Time 14.12s (± 0.37%) 14.05s (± 1.26%) -0.07s (- 0.50%) 13.41s 14.39s
Compiler-Unions - node (v12.1.0, x64)
Memory used 191,395k (± 0.04%) 191,348k (± 0.04%) -47k (- 0.02%) 191,161k 191,520k
Parse Time 0.78s (± 0.63%) 0.78s (± 0.74%) +0.00s (+ 0.52%) 0.77s 0.79s
Bind Time 0.53s (± 0.84%) 0.53s (± 0.63%) +0.00s (+ 0.38%) 0.52s 0.54s
Check Time 7.38s (± 0.57%) 7.42s (± 0.58%) +0.04s (+ 0.49%) 7.33s 7.51s
Emit Time 2.47s (± 1.14%) 2.46s (± 0.61%) -0.01s (- 0.49%) 2.42s 2.49s
Total Time 11.16s (± 0.52%) 11.19s (± 0.34%) +0.03s (+ 0.26%) 11.10s 11.27s
Monaco - node (v12.1.0, x64)
Memory used 325,170k (± 0.02%) 325,211k (± 0.02%) +41k (+ 0.01%) 325,031k 325,365k
Parse Time 1.46s (± 0.73%) 1.47s (± 0.85%) +0.00s (+ 0.34%) 1.44s 1.49s
Bind Time 0.73s (± 0.82%) 0.73s (± 0.64%) +0.00s (+ 0.55%) 0.72s 0.74s
Check Time 5.34s (± 0.61%) 5.31s (± 0.61%) -0.03s (- 0.62%) 5.24s 5.39s
Emit Time 3.23s (± 1.27%) 3.18s (± 0.75%) -0.04s (- 1.33%) 3.12s 3.25s
Total Time 10.75s (± 0.60%) 10.69s (± 0.49%) -0.06s (- 0.60%) 10.55s 10.77s
TFS - node (v12.1.0, x64)
Memory used 289,497k (± 0.02%) 289,430k (± 0.02%) -67k (- 0.02%) 289,307k 289,584k
Parse Time 1.21s (± 0.63%) 1.21s (± 0.41%) -0.00s (- 0.08%) 1.21s 1.23s
Bind Time 0.69s (± 0.97%) 0.69s (± 0.96%) +0.00s (+ 0.44%) 0.68s 0.71s
Check Time 4.90s (± 0.54%) 4.89s (± 0.34%) -0.00s (- 0.10%) 4.86s 4.94s
Emit Time 3.37s (± 1.09%) 3.37s (± 0.62%) -0.00s (- 0.09%) 3.32s 3.41s
Total Time 10.17s (± 0.49%) 10.16s (± 0.32%) -0.01s (- 0.11%) 10.07s 10.23s
material-ui - node (v12.1.0, x64)
Memory used 451,103k (± 0.01%) 449,816k (± 0.01%) -1,287k (- 0.29%) 449,700k 449,941k
Parse Time 1.78s (± 0.38%) 1.78s (± 0.63%) +0.00s (+ 0.17%) 1.76s 1.82s
Bind Time 0.64s (± 0.91%) 0.64s (± 0.81%) +0.00s (+ 0.31%) 0.63s 0.65s
Check Time 12.97s (± 0.45%) 12.94s (± 0.46%) -0.04s (- 0.29%) 12.74s 13.04s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.38s (± 0.39%) 15.36s (± 0.40%) -0.03s (- 0.18%) 15.15s 15.44s
Angular - node (v14.15.1, x64)
Memory used 330,486k (± 0.00%) 330,251k (± 0.01%) -235k (- 0.07%) 330,163k 330,297k
Parse Time 1.94s (± 0.62%) 1.94s (± 0.51%) +0.00s (+ 0.15%) 1.93s 1.97s
Bind Time 0.86s (± 0.40%) 0.86s (± 0.72%) +0.00s (+ 0.47%) 0.85s 0.87s
Check Time 5.35s (± 0.33%) 5.33s (± 0.34%) -0.03s (- 0.52%) 5.28s 5.37s
Emit Time 6.14s (± 0.47%) 6.23s (± 0.67%) +0.09s (+ 1.48%) 6.16s 6.33s
Total Time 14.29s (± 0.34%) 14.37s (± 0.34%) +0.07s (+ 0.50%) 14.27s 14.53s
Compiler-Unions - node (v14.15.1, x64)
Memory used 191,817k (± 0.58%) 192,868k (± 0.37%) +1,050k (+ 0.55%) 190,002k 193,293k
Parse Time 0.81s (± 0.61%) 0.81s (± 0.80%) +0.00s (+ 0.25%) 0.80s 0.82s
Bind Time 0.55s (± 0.40%) 0.56s (± 0.80%) +0.01s (+ 1.27%) 0.55s 0.57s
Check Time 7.58s (± 0.54%) 7.57s (± 0.43%) -0.02s (- 0.21%) 7.50s 7.66s
Emit Time 2.45s (± 1.20%) 2.45s (± 0.78%) -0.00s (- 0.08%) 2.41s 2.51s
Total Time 11.39s (± 0.42%) 11.38s (± 0.22%) -0.02s (- 0.14%) 11.31s 11.44s
Monaco - node (v14.15.1, x64)
Memory used 324,002k (± 0.01%) 324,013k (± 0.00%) +11k (+ 0.00%) 323,977k 324,039k
Parse Time 1.50s (± 0.71%) 1.51s (± 0.60%) +0.01s (+ 0.47%) 1.49s 1.53s
Bind Time 0.76s (± 1.00%) 0.76s (± 0.73%) +0.00s (+ 0.26%) 0.74s 0.77s
Check Time 5.31s (± 0.41%) 5.31s (± 0.43%) +0.00s (+ 0.04%) 5.27s 5.37s
Emit Time 3.23s (± 0.61%) 3.21s (± 0.51%) -0.02s (- 0.62%) 3.18s 3.24s
Total Time 10.80s (± 0.32%) 10.79s (± 0.29%) -0.02s (- 0.16%) 10.73s 10.86s
TFS - node (v14.15.1, x64)
Memory used 288,348k (± 0.01%) 288,351k (± 0.01%) +3k (+ 0.00%) 288,314k 288,393k
Parse Time 1.23s (± 0.50%) 1.23s (± 0.56%) -0.01s (- 0.41%) 1.21s 1.24s
Bind Time 0.73s (± 0.81%) 0.73s (± 0.79%) -0.00s (- 0.54%) 0.72s 0.74s
Check Time 4.92s (± 0.39%) 4.91s (± 0.48%) -0.01s (- 0.20%) 4.87s 4.96s
Emit Time 3.47s (± 0.88%) 3.46s (± 0.32%) -0.01s (- 0.37%) 3.43s 3.47s
Total Time 10.35s (± 0.33%) 10.32s (± 0.26%) -0.03s (- 0.28%) 10.28s 10.39s
material-ui - node (v14.15.1, x64)
Memory used 449,324k (± 0.00%) 448,065k (± 0.00%) -1,259k (- 0.28%) 448,022k 448,112k
Parse Time 1.82s (± 0.66%) 1.81s (± 0.46%) -0.00s (- 0.11%) 1.80s 1.83s
Bind Time 0.68s (± 0.44%) 0.68s (± 0.86%) -0.00s (- 0.15%) 0.67s 0.69s
Check Time 13.09s (± 0.43%) 13.15s (± 0.72%) +0.05s (+ 0.41%) 12.98s 13.34s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.59s (± 0.34%) 15.64s (± 0.59%) +0.05s (+ 0.33%) 15.47s 15.82s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory6 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v10.16.3, x64)
  • Compiler-Unions - node (v12.1.0, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v14.15.1, x64)
Benchmark Name Iterations
Current 45220 10
Baseline main 10

Developer Information:

Download Benchmark

@andrewbranch andrewbranch merged commit 9e2fc16 into microsoft:main Oct 12, 2021
@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - main..45220

Metric main 45220 Delta Best Worst
Angular - node (v14.15.1, x64)
Memory used 330,486k (± 0.00%) 330,249k (± 0.01%) -237k (- 0.07%) 330,179k 330,308k
Parse Time 1.94s (± 0.62%) 1.94s (± 0.45%) +0.00s (+ 0.15%) 1.92s 1.97s
Bind Time 0.86s (± 0.40%) 0.86s (± 0.55%) +0.00s (+ 0.35%) 0.85s 0.87s
Check Time 5.35s (± 0.33%) 5.37s (± 0.44%) +0.01s (+ 0.26%) 5.30s 5.42s
Emit Time 6.14s (± 0.47%) 6.23s (± 1.02%) +0.09s (+ 1.43%) 6.12s 6.43s
Total Time 14.29s (± 0.34%) 14.40s (± 0.41%) +0.11s (+ 0.76%) 14.29s 14.53s
Compiler-Unions - node (v14.15.1, x64)
Memory used 191,817k (± 0.58%) 192,556k (± 0.48%) +738k (+ 0.38%) 190,018k 193,262k
Parse Time 0.81s (± 0.61%) 0.80s (± 0.46%) -0.00s (- 0.12%) 0.80s 0.81s
Bind Time 0.55s (± 0.40%) 0.56s (± 0.93%) +0.01s (+ 1.45%) 0.55s 0.57s
Check Time 7.58s (± 0.54%) 7.59s (± 0.91%) +0.01s (+ 0.09%) 7.45s 7.75s
Emit Time 2.45s (± 1.20%) 2.45s (± 0.91%) -0.00s (- 0.12%) 2.42s 2.53s
Total Time 11.39s (± 0.42%) 11.40s (± 0.77%) +0.01s (+ 0.08%) 11.25s 11.65s
Monaco - node (v14.15.1, x64)
Memory used 324,002k (± 0.01%) 324,005k (± 0.00%) +3k (+ 0.00%) 323,974k 324,035k
Parse Time 1.50s (± 0.71%) 1.51s (± 0.59%) +0.01s (+ 0.73%) 1.50s 1.54s
Bind Time 0.76s (± 1.00%) 0.75s (± 0.66%) -0.00s (- 0.13%) 0.75s 0.77s
Check Time 5.31s (± 0.41%) 5.32s (± 0.63%) +0.01s (+ 0.17%) 5.24s 5.39s
Emit Time 3.23s (± 0.61%) 3.23s (± 0.75%) -0.00s (- 0.03%) 3.18s 3.29s
Total Time 10.80s (± 0.32%) 10.82s (± 0.46%) +0.01s (+ 0.12%) 10.70s 10.92s
TFS - node (v14.15.1, x64)
Memory used 288,348k (± 0.01%) 288,356k (± 0.01%) +8k (+ 0.00%) 288,316k 288,399k
Parse Time 1.23s (± 0.50%) 1.24s (± 0.84%) +0.01s (+ 0.57%) 1.22s 1.26s
Bind Time 0.73s (± 0.81%) 0.73s (± 0.46%) -0.00s (- 0.14%) 0.73s 0.74s
Check Time 4.92s (± 0.39%) 4.93s (± 0.50%) +0.02s (+ 0.33%) 4.86s 4.97s
Emit Time 3.47s (± 0.88%) 3.48s (± 0.69%) +0.01s (+ 0.32%) 3.44s 3.55s
Total Time 10.35s (± 0.33%) 10.38s (± 0.36%) +0.03s (+ 0.30%) 10.27s 10.47s
material-ui - node (v14.15.1, x64)
Memory used 449,324k (± 0.00%) 447,985k (± 0.04%) -1,339k (- 0.30%) 447,327k 448,110k
Parse Time 1.82s (± 0.66%) 1.82s (± 0.54%) +0.01s (+ 0.33%) 1.80s 1.85s
Bind Time 0.68s (± 0.44%) 0.68s (± 0.69%) +0.00s (+ 0.29%) 0.67s 0.69s
Check Time 13.09s (± 0.43%) 13.18s (± 0.75%) +0.08s (+ 0.63%) 12.98s 13.37s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.59s (± 0.34%) 15.68s (± 0.63%) +0.09s (+ 0.58%) 15.49s 15.87s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory6 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v14.15.1, x64)
Benchmark Name Iterations
Current 45220 10
Baseline main 10

Developer Information:

Download Benchmark

@ypresto ypresto deleted the perf-large-primitive-union branch October 25, 2021 02:20
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
For Backlog Bug PRs that fix a backlog bug
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Improve performance for large unions with few non-primitives
6 participants