Skip to content

Early couldContainTypeVariables check in instantiateType #37844

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

Merged
merged 6 commits into from
Apr 29, 2020

Conversation

ahejlsberg
Copy link
Member

This PR revises instantiateType to perform an early check of couldContainTypeVariables. Previously this check was performed in multiple places. This change also means that we don't count instantiations of types that don't contain type variables (which are basically no-ops).

@ahejlsberg
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 8, 2020

Heya @ahejlsberg, I've started to run the perf test suite on this PR at 1cc7a53. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - master..37844

Metric master 37844 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 327,720k (± 0.01%) 327,133k (± 0.03%) -587k (- 0.18%) 326,913k 327,416k
Parse Time 1.64s (± 0.54%) 1.63s (± 0.56%) -0.01s (- 0.49%) 1.61s 1.65s
Bind Time 0.89s (± 0.75%) 0.89s (± 0.76%) +0.01s (+ 0.79%) 0.88s 0.91s
Check Time 4.77s (± 0.46%) 4.77s (± 0.60%) +0.00s (+ 0.04%) 4.69s 4.83s
Emit Time 5.33s (± 0.45%) 5.33s (± 0.66%) +0.00s (+ 0.08%) 5.28s 5.41s
Total Time 12.62s (± 0.20%) 12.63s (± 0.49%) +0.01s (+ 0.06%) 12.49s 12.77s
Monaco - node (v10.16.3, x64)
Memory used 327,091k (± 0.02%) 327,045k (± 0.01%) -46k (- 0.01%) 326,966k 327,147k
Parse Time 1.26s (± 0.47%) 1.27s (± 0.47%) +0.00s (+ 0.16%) 1.25s 1.28s
Bind Time 0.78s (± 0.77%) 0.77s (± 0.64%) -0.00s (- 0.26%) 0.76s 0.78s
Check Time 4.77s (± 0.42%) 4.75s (± 0.41%) -0.02s (- 0.34%) 4.71s 4.79s
Emit Time 2.92s (± 0.65%) 2.93s (± 0.61%) +0.01s (+ 0.21%) 2.89s 2.97s
Total Time 9.73s (± 0.37%) 9.72s (± 0.33%) -0.02s (- 0.15%) 9.64s 9.79s
TFS - node (v10.16.3, x64)
Memory used 292,014k (± 0.03%) 292,003k (± 0.02%) -12k (- 0.00%) 291,894k 292,163k
Parse Time 0.95s (± 0.94%) 0.95s (± 0.42%) -0.00s (- 0.42%) 0.94s 0.96s
Bind Time 0.75s (± 0.80%) 0.74s (± 0.98%) -0.00s (- 0.54%) 0.73s 0.76s
Check Time 4.31s (± 0.50%) 4.31s (± 0.52%) +0.00s (+ 0.07%) 4.26s 4.37s
Emit Time 3.08s (± 0.92%) 3.05s (± 0.80%) -0.02s (- 0.78%) 3.00s 3.09s
Total Time 9.09s (± 0.48%) 9.06s (± 0.48%) -0.03s (- 0.29%) 8.96s 9.13s
material-ui - node (v10.16.3, x64)
Memory used 450,624k (± 0.01%) 450,355k (± 0.01%) -270k (- 0.06%) 450,269k 450,467k
Parse Time 1.78s (± 0.49%) 1.78s (± 0.52%) 0.00s ( 0.00%) 1.77s 1.80s
Bind Time 0.69s (± 0.65%) 0.68s (± 0.59%) -0.01s (- 1.02%) 0.67s 0.69s
Check Time 12.62s (± 0.56%) 12.59s (± 0.49%) -0.02s (- 0.18%) 12.45s 12.72s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.09s (± 0.50%) 15.06s (± 0.39%) -0.03s (- 0.19%) 14.93s 15.18s
Angular - node (v12.1.0, x64)
Memory used 303,203k (± 0.01%) 302,602k (± 0.07%) -600k (- 0.20%) 301,778k 302,793k
Parse Time 1.58s (± 0.84%) 1.58s (± 0.69%) -0.01s (- 0.38%) 1.56s 1.61s
Bind Time 0.87s (± 0.81%) 0.87s (± 0.68%) +0.01s (+ 0.58%) 0.86s 0.89s
Check Time 4.65s (± 0.42%) 4.68s (± 0.64%) +0.03s (+ 0.56%) 4.64s 4.75s
Emit Time 5.47s (± 0.84%) 5.47s (± 0.74%) +0.00s (+ 0.02%) 5.42s 5.61s
Total Time 12.58s (± 0.54%) 12.61s (± 0.49%) +0.02s (+ 0.20%) 12.51s 12.80s
Monaco - node (v12.1.0, x64)
Memory used 307,014k (± 0.02%) 307,046k (± 0.02%) +32k (+ 0.01%) 306,897k 307,180k
Parse Time 1.22s (± 0.62%) 1.22s (± 0.72%) +0.00s (+ 0.08%) 1.20s 1.24s
Bind Time 0.74s (± 0.70%) 0.75s (± 1.16%) +0.01s (+ 0.94%) 0.74s 0.77s
Check Time 4.57s (± 0.33%) 4.56s (± 0.41%) -0.01s (- 0.11%) 4.54s 4.62s
Emit Time 2.96s (± 0.56%) 2.95s (± 0.36%) -0.01s (- 0.30%) 2.93s 2.98s
Total Time 9.49s (± 0.13%) 9.48s (± 0.25%) -0.01s (- 0.14%) 9.44s 9.55s
TFS - node (v12.1.0, x64)
Memory used 274,359k (± 0.02%) 274,371k (± 0.02%) +12k (+ 0.00%) 274,249k 274,509k
Parse Time 0.94s (± 0.73%) 0.94s (± 0.88%) 0.00s ( 0.00%) 0.92s 0.95s
Bind Time 0.71s (± 1.32%) 0.71s (± 1.09%) +0.00s (+ 0.14%) 0.70s 0.73s
Check Time 4.22s (± 0.42%) 4.22s (± 0.43%) -0.00s (- 0.12%) 4.18s 4.26s
Emit Time 3.10s (± 0.92%) 3.10s (± 0.62%) -0.00s (- 0.06%) 3.05s 3.16s
Total Time 8.97s (± 0.42%) 8.97s (± 0.25%) -0.00s (- 0.04%) 8.93s 9.04s
material-ui - node (v12.1.0, x64)
Memory used 428,024k (± 0.02%) 427,865k (± 0.02%) -159k (- 0.04%) 427,723k 427,997k
Parse Time 1.76s (± 0.69%) 1.75s (± 0.39%) -0.00s (- 0.00%) 1.74s 1.77s
Bind Time 0.63s (± 1.02%) 0.64s (± 0.57%) +0.00s (+ 0.63%) 0.63s 0.64s
Check Time 11.24s (± 0.69%) 11.24s (± 0.30%) +0.00s (+ 0.01%) 11.18s 11.32s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 13.62s (± 0.66%) 13.63s (± 0.25%) +0.01s (+ 0.04%) 13.57s 13.73s
Angular - node (v8.9.0, x64)
Memory used 322,538k (± 0.01%) 322,051k (± 0.01%) -487k (- 0.15%) 321,950k 322,148k
Parse Time 2.12s (± 0.37%) 2.12s (± 0.47%) -0.00s (- 0.09%) 2.09s 2.14s
Bind Time 0.92s (± 0.70%) 0.92s (± 0.96%) -0.00s (- 0.22%) 0.90s 0.94s
Check Time 5.45s (± 1.08%) 5.42s (± 1.40%) -0.03s (- 0.57%) 5.24s 5.56s
Emit Time 6.23s (± 1.06%) 6.30s (± 1.54%) +0.08s (+ 1.24%) 6.17s 6.51s
Total Time 14.71s (± 0.49%) 14.76s (± 0.41%) +0.05s (+ 0.31%) 14.66s 14.93s
Monaco - node (v8.9.0, x64)
Memory used 325,527k (± 0.02%) 325,476k (± 0.02%) -51k (- 0.02%) 325,371k 325,595k
Parse Time 1.56s (± 0.70%) 1.55s (± 0.49%) -0.02s (- 1.02%) 1.53s 1.56s
Bind Time 0.91s (± 1.51%) 0.90s (± 0.72%) -0.01s (- 0.99%) 0.88s 0.91s
Check Time 5.39s (± 0.22%) 5.40s (± 0.34%) +0.01s (+ 0.15%) 5.37s 5.44s
Emit Time 3.51s (± 0.48%) 3.52s (± 0.56%) +0.00s (+ 0.09%) 3.46s 3.54s
Total Time 11.37s (± 0.23%) 11.37s (± 0.36%) -0.01s (- 0.06%) 11.25s 11.44s
TFS - node (v8.9.0, x64)
Memory used 291,534k (± 0.02%) 291,463k (± 0.02%) -71k (- 0.02%) 291,340k 291,600k
Parse Time 1.26s (± 0.41%) 1.26s (± 0.35%) +0.00s (+ 0.08%) 1.26s 1.28s
Bind Time 0.76s (± 0.65%) 0.74s (± 0.66%) -0.01s (- 1.59%) 0.73s 0.75s
Check Time 5.07s (± 1.22%) 5.08s (± 1.51%) +0.01s (+ 0.16%) 4.84s 5.17s
Emit Time 3.17s (± 2.69%) 3.16s (± 2.06%) -0.01s (- 0.28%) 3.04s 3.36s
Total Time 10.25s (± 0.36%) 10.24s (± 0.36%) -0.01s (- 0.11%) 10.16s 10.32s
material-ui - node (v8.9.0, x64)
Memory used 453,102k (± 0.01%) 452,926k (± 0.01%) -176k (- 0.04%) 452,805k 453,016k
Parse Time 2.12s (± 0.35%) 2.11s (± 0.44%) -0.01s (- 0.38%) 2.10s 2.13s
Bind Time 0.81s (± 1.22%) 0.81s (± 0.93%) +0.01s (+ 0.74%) 0.79s 0.83s
Check Time 16.63s (± 0.67%) 16.67s (± 0.48%) +0.04s (+ 0.26%) 16.52s 16.85s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 19.56s (± 0.55%) 19.60s (± 0.44%) +0.04s (+ 0.22%) 19.43s 19.80s
Angular - node (v8.9.0, x86)
Memory used 185,672k (± 0.02%) 185,451k (± 0.03%) -221k (- 0.12%) 185,350k 185,578k
Parse Time 2.06s (± 0.59%) 2.05s (± 0.47%) -0.00s (- 0.19%) 2.03s 2.07s
Bind Time 1.07s (± 0.75%) 1.07s (± 0.60%) +0.00s (+ 0.37%) 1.06s 1.09s
Check Time 5.00s (± 0.56%) 4.99s (± 0.59%) -0.00s (- 0.06%) 4.92s 5.06s
Emit Time 6.06s (± 0.37%) 6.09s (± 0.99%) +0.03s (+ 0.45%) 5.97s 6.23s
Total Time 14.18s (± 0.31%) 14.20s (± 0.56%) +0.03s (+ 0.18%) 14.01s 14.37s
Monaco - node (v8.9.0, x86)
Memory used 185,346k (± 0.03%) 185,318k (± 0.01%) -28k (- 0.02%) 185,263k 185,383k
Parse Time 1.60s (± 0.43%) 1.59s (± 0.56%) -0.00s (- 0.13%) 1.58s 1.62s
Bind Time 0.77s (± 1.20%) 0.77s (± 0.72%) -0.00s (- 0.52%) 0.76s 0.78s
Check Time 5.44s (± 0.47%) 5.41s (± 0.46%) -0.03s (- 0.55%) 5.36s 5.46s
Emit Time 2.86s (± 1.13%) 2.87s (± 0.57%) +0.01s (+ 0.24%) 2.84s 2.92s
Total Time 10.67s (± 0.52%) 10.64s (± 0.28%) -0.03s (- 0.30%) 10.59s 10.70s
TFS - node (v8.9.0, x86)
Memory used 166,889k (± 0.02%) 166,892k (± 0.02%) +3k (+ 0.00%) 166,827k 166,971k
Parse Time 1.30s (± 0.73%) 1.29s (± 0.82%) -0.00s (- 0.08%) 1.28s 1.33s
Bind Time 0.71s (± 0.95%) 0.72s (± 1.24%) +0.00s (+ 0.28%) 0.70s 0.74s
Check Time 4.68s (± 0.60%) 4.65s (± 0.54%) -0.03s (- 0.56%) 4.58s 4.72s
Emit Time 3.02s (± 2.83%) 3.08s (± 3.45%) +0.06s (+ 1.95%) 2.91s 3.32s
Total Time 9.71s (± 0.98%) 9.74s (± 1.32%) +0.04s (+ 0.37%) 9.55s 10.03s
material-ui - node (v8.9.0, x86)
Memory used 256,508k (± 0.02%) 256,437k (± 0.02%) -71k (- 0.03%) 256,328k 256,541k
Parse Time 2.19s (± 0.62%) 2.19s (± 0.82%) +0.00s (+ 0.05%) 2.16s 2.24s
Bind Time 0.69s (± 1.19%) 0.69s (± 1.86%) +0.00s (+ 0.44%) 0.67s 0.72s
Check Time 15.22s (± 0.65%) 15.22s (± 0.76%) +0.00s (+ 0.01%) 14.98s 15.44s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 18.09s (± 0.62%) 18.10s (± 0.61%) +0.01s (+ 0.07%) 17.90s 18.30s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-166-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 (v8.9.0, x64)
  • node (v8.9.0, x86)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v8.9.0, x64)
  • material-ui - node (v8.9.0, x86)
Benchmark Name Iterations
Current 37844 10
Baseline master 10

Copy link
Member

@weswigham weswigham left a comment

Choose a reason for hiding this comment

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

This is like... half of what I was thinking. There's also like {[key in ReallyBigKeyUnion]: OtherReallyBigObjectTypeUnion} - the template could contain type variables (but doesn't), however no instantiation will affect it. - every instantiation is a noop, but for every element of ReallyBigKeyUnion we (eventually, assuming all properties are eventually pulled on) perform an instantiation over OtherReallyBigObjectTypeUnion (and this increment the statement instantiationCount). Since we deferred property type instantiation, writing a test case that actually pulls on all the props in a single source element check is really difficult to do now, though.

@ahejlsberg
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 8, 2020

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - master..37844

Metric master 37844 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 327,647k (± 0.02%) 327,276k (± 0.02%) -371k (- 0.11%) 327,082k 327,401k
Parse Time 1.64s (± 0.35%) 1.63s (± 0.77%) -0.01s (- 0.37%) 1.61s 1.66s
Bind Time 0.89s (± 1.07%) 0.89s (± 0.75%) -0.01s (- 0.89%) 0.87s 0.90s
Check Time 4.76s (± 0.47%) 4.78s (± 0.43%) +0.02s (+ 0.44%) 4.73s 4.82s
Emit Time 5.33s (± 0.66%) 5.33s (± 0.68%) +0.00s (+ 0.04%) 5.26s 5.44s
Total Time 12.62s (± 0.38%) 12.63s (± 0.42%) +0.01s (+ 0.10%) 12.54s 12.79s
Monaco - node (v10.16.3, x64)
Memory used 327,101k (± 0.02%) 327,091k (± 0.02%) -9k (- 0.00%) 326,934k 327,239k
Parse Time 1.27s (± 0.63%) 1.27s (± 0.54%) +0.01s (+ 0.55%) 1.26s 1.29s
Bind Time 0.78s (± 0.88%) 0.78s (± 0.44%) +0.00s (+ 0.26%) 0.77s 0.78s
Check Time 4.76s (± 0.57%) 4.75s (± 0.42%) -0.00s (- 0.08%) 4.70s 4.80s
Emit Time 2.91s (± 0.51%) 2.91s (± 0.55%) -0.01s (- 0.31%) 2.88s 2.94s
Total Time 9.72s (± 0.38%) 9.71s (± 0.30%) -0.01s (- 0.11%) 9.63s 9.76s
TFS - node (v10.16.3, x64)
Memory used 292,079k (± 0.02%) 292,023k (± 0.02%) -57k (- 0.02%) 291,905k 292,149k
Parse Time 0.96s (± 0.54%) 0.96s (± 0.54%) +0.00s (+ 0.00%) 0.95s 0.97s
Bind Time 0.75s (± 0.64%) 0.74s (± 0.66%) -0.00s (- 0.40%) 0.73s 0.75s
Check Time 4.31s (± 0.66%) 4.30s (± 0.66%) -0.01s (- 0.28%) 4.24s 4.37s
Emit Time 3.08s (± 0.77%) 3.06s (± 0.77%) -0.02s (- 0.71%) 2.99s 3.10s
Total Time 9.09s (± 0.54%) 9.06s (± 0.51%) -0.03s (- 0.36%) 8.98s 9.18s
material-ui - node (v10.16.3, x64)
Memory used 450,579k (± 0.01%) 448,866k (± 0.01%) -1,713k (- 0.38%) 448,743k 449,000k
Parse Time 1.78s (± 0.42%) 1.78s (± 0.53%) -0.00s (- 0.06%) 1.75s 1.80s
Bind Time 0.68s (± 0.76%) 0.68s (± 1.38%) +0.00s (+ 0.29%) 0.66s 0.70s
Check Time 12.59s (± 0.45%) 12.50s (± 0.67%) -0.09s (- 0.68%) 12.34s 12.73s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.05s (± 0.40%) 14.96s (± 0.56%) -0.08s (- 0.56%) 14.82s 15.22s
Angular - node (v12.1.0, x64)
Memory used 303,105k (± 0.07%) 302,918k (± 0.02%) -186k (- 0.06%) 302,788k 303,059k
Parse Time 1.59s (± 0.60%) 1.59s (± 0.44%) +0.00s (+ 0.19%) 1.58s 1.61s
Bind Time 0.88s (± 0.83%) 0.87s (± 0.76%) -0.01s (- 0.91%) 0.85s 0.88s
Check Time 4.65s (± 0.60%) 4.63s (± 0.27%) -0.02s (- 0.37%) 4.60s 4.66s
Emit Time 5.47s (± 0.80%) 5.49s (± 0.65%) +0.02s (+ 0.40%) 5.43s 5.57s
Total Time 12.58s (± 0.51%) 12.58s (± 0.35%) +0.00s (+ 0.01%) 12.50s 12.69s
Monaco - node (v12.1.0, x64)
Memory used 307,079k (± 0.02%) 307,040k (± 0.01%) -39k (- 0.01%) 306,982k 307,103k
Parse Time 1.22s (± 0.56%) 1.22s (± 0.51%) +0.01s (+ 0.49%) 1.21s 1.24s
Bind Time 0.75s (± 1.00%) 0.75s (± 0.91%) -0.00s (- 0.13%) 0.73s 0.76s
Check Time 4.57s (± 0.42%) 4.59s (± 0.55%) +0.02s (+ 0.37%) 4.55s 4.68s
Emit Time 2.97s (± 0.49%) 2.98s (± 1.43%) +0.01s (+ 0.34%) 2.92s 3.10s
Total Time 9.51s (± 0.26%) 9.54s (± 0.69%) +0.03s (+ 0.32%) 9.44s 9.76s
TFS - node (v12.1.0, x64)
Memory used 274,325k (± 0.02%) 274,360k (± 0.03%) +34k (+ 0.01%) 274,250k 274,566k
Parse Time 0.94s (± 0.71%) 0.94s (± 1.07%) +0.01s (+ 0.85%) 0.92s 0.96s
Bind Time 0.70s (± 0.85%) 0.71s (± 1.25%) +0.00s (+ 0.28%) 0.69s 0.73s
Check Time 4.22s (± 0.39%) 4.21s (± 0.55%) -0.01s (- 0.19%) 4.16s 4.27s
Emit Time 3.09s (± 0.60%) 3.08s (± 0.87%) -0.01s (- 0.26%) 3.04s 3.16s
Total Time 8.96s (± 0.17%) 8.95s (± 0.44%) -0.01s (- 0.08%) 8.87s 9.05s
material-ui - node (v12.1.0, x64)
Memory used 427,846k (± 0.08%) 426,219k (± 0.05%) -1,627k (- 0.38%) 425,353k 426,407k
Parse Time 1.76s (± 0.40%) 1.76s (± 0.62%) -0.00s (- 0.17%) 1.73s 1.78s
Bind Time 0.63s (± 1.19%) 0.63s (± 0.78%) -0.00s (- 0.00%) 0.63s 0.65s
Check Time 11.25s (± 0.73%) 11.15s (± 0.95%) -0.10s (- 0.85%) 11.05s 11.56s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 13.65s (± 0.60%) 13.54s (± 0.76%) -0.10s (- 0.74%) 13.44s 13.94s
Angular - node (v8.9.0, x64)
Memory used 322,532k (± 0.02%) 322,229k (± 0.01%) -304k (- 0.09%) 322,148k 322,309k
Parse Time 2.13s (± 0.42%) 2.12s (± 0.54%) -0.00s (- 0.09%) 2.10s 2.16s
Bind Time 0.92s (± 0.76%) 0.92s (± 1.01%) +0.00s (+ 0.11%) 0.91s 0.95s
Check Time 5.44s (± 1.10%) 5.47s (± 1.38%) +0.03s (+ 0.55%) 5.25s 5.56s
Emit Time 6.26s (± 1.12%) 6.22s (± 1.18%) -0.05s (- 0.73%) 6.03s 6.40s
Total Time 14.75s (± 0.26%) 14.74s (± 0.48%) -0.01s (- 0.09%) 14.57s 14.88s
Monaco - node (v8.9.0, x64)
Memory used 325,532k (± 0.02%) 325,496k (± 0.02%) -36k (- 0.01%) 325,384k 325,668k
Parse Time 1.55s (± 0.52%) 1.56s (± 0.75%) +0.01s (+ 0.45%) 1.53s 1.59s
Bind Time 0.91s (± 0.66%) 0.90s (± 1.14%) -0.01s (- 0.77%) 0.88s 0.92s
Check Time 5.37s (± 0.63%) 5.41s (± 0.73%) +0.04s (+ 0.78%) 5.34s 5.52s
Emit Time 3.52s (± 0.50%) 3.52s (± 0.41%) -0.00s (- 0.11%) 3.48s 3.55s
Total Time 11.35s (± 0.44%) 11.39s (± 0.51%) +0.04s (+ 0.36%) 11.29s 11.54s
TFS - node (v8.9.0, x64)
Memory used 291,505k (± 0.02%) 291,494k (± 0.01%) -11k (- 0.00%) 291,417k 291,633k
Parse Time 1.26s (± 0.49%) 1.26s (± 0.47%) +0.00s (+ 0.24%) 1.25s 1.28s
Bind Time 0.75s (± 0.59%) 0.75s (± 0.65%) +0.00s (+ 0.27%) 0.75s 0.77s
Check Time 5.03s (± 1.70%) 5.00s (± 1.59%) -0.02s (- 0.48%) 4.83s 5.13s
Emit Time 3.22s (± 2.86%) 3.23s (± 3.08%) +0.01s (+ 0.19%) 3.05s 3.41s
Total Time 10.26s (± 0.42%) 10.25s (± 0.54%) -0.01s (- 0.11%) 10.12s 10.36s
material-ui - node (v8.9.0, x64)
Memory used 453,055k (± 0.01%) 451,697k (± 0.01%) -1,359k (- 0.30%) 451,614k 451,800k
Parse Time 2.12s (± 0.39%) 2.11s (± 0.32%) -0.00s (- 0.00%) 2.10s 2.13s
Bind Time 0.81s (± 0.90%) 0.82s (± 0.79%) +0.01s (+ 0.74%) 0.80s 0.83s
Check Time 16.64s (± 0.74%) 16.49s (± 1.16%) -0.15s (- 0.88%) 16.10s 16.90s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 19.57s (± 0.66%) 19.43s (± 0.99%) -0.14s (- 0.72%) 19.07s 19.83s
Angular - node (v8.9.0, x86)
Memory used 185,680k (± 0.03%) 185,506k (± 0.03%) -174k (- 0.09%) 185,397k 185,622k
Parse Time 2.07s (± 0.48%) 2.07s (± 0.51%) -0.00s (- 0.05%) 2.05s 2.10s
Bind Time 1.07s (± 0.37%) 1.08s (± 0.65%) +0.01s (+ 0.93%) 1.07s 1.10s
Check Time 4.99s (± 0.46%) 5.02s (± 0.62%) +0.02s (+ 0.44%) 4.98s 5.10s
Emit Time 6.04s (± 0.52%) 6.07s (± 0.65%) +0.02s (+ 0.40%) 5.98s 6.17s
Total Time 14.17s (± 0.33%) 14.23s (± 0.44%) +0.05s (+ 0.38%) 14.13s 14.45s
Monaco - node (v8.9.0, x86)
Memory used 185,355k (± 0.01%) 185,338k (± 0.02%) -17k (- 0.01%) 185,235k 185,431k
Parse Time 1.60s (± 0.89%) 1.59s (± 0.51%) -0.01s (- 0.50%) 1.58s 1.61s
Bind Time 0.77s (± 0.97%) 0.77s (± 0.72%) -0.00s (- 0.13%) 0.76s 0.79s
Check Time 5.41s (± 0.35%) 5.47s (± 0.55%) +0.05s (+ 0.98%) 5.38s 5.52s
Emit Time 2.87s (± 0.72%) 2.89s (± 1.71%) +0.02s (+ 0.63%) 2.76s 2.98s
Total Time 10.66s (± 0.33%) 10.72s (± 0.69%) +0.06s (+ 0.54%) 10.49s 10.82s
TFS - node (v8.9.0, x86)
Memory used 166,918k (± 0.02%) 166,895k (± 0.03%) -23k (- 0.01%) 166,801k 166,994k
Parse Time 1.30s (± 1.42%) 1.30s (± 0.69%) -0.01s (- 0.54%) 1.28s 1.32s
Bind Time 0.71s (± 0.94%) 0.72s (± 0.72%) +0.01s (+ 0.84%) 0.71s 0.73s
Check Time 4.65s (± 0.52%) 4.63s (± 0.46%) -0.02s (- 0.41%) 4.57s 4.67s
Emit Time 3.04s (± 3.18%) 3.01s (± 1.79%) -0.02s (- 0.82%) 2.92s 3.21s
Total Time 9.71s (± 1.14%) 9.67s (± 0.42%) -0.05s (- 0.49%) 9.59s 9.78s
material-ui - node (v8.9.0, x86)
Memory used 256,522k (± 0.01%) 255,790k (± 0.01%) -732k (- 0.29%) 255,721k 255,859k
Parse Time 2.19s (± 0.53%) 2.19s (± 0.55%) -0.00s (- 0.18%) 2.17s 2.22s
Bind Time 0.69s (± 1.19%) 0.69s (± 1.01%) +0.00s (+ 0.58%) 0.68s 0.71s
Check Time 15.16s (± 0.52%) 15.11s (± 0.75%) -0.05s (- 0.34%) 14.97s 15.49s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 18.04s (± 0.41%) 17.99s (± 0.71%) -0.05s (- 0.27%) 17.83s 18.40s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-166-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 (v8.9.0, x64)
  • node (v8.9.0, x86)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v8.9.0, x64)
  • material-ui - node (v8.9.0, x86)
Benchmark Name Iterations
Current 37844 10
Baseline master 10

@ahejlsberg
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 28, 2020

Heya @ahejlsberg, I've started to run the perf test suite on this PR at 5d7807e. You can monitor the build here.

Update: The results are in!

@ahejlsberg
Copy link
Member Author

ahejlsberg commented Apr 28, 2020

@weswigham With my latest commit, couldContainTypeVariables returns false for types that are aliased by a non-generic top-level type alias. That would address the issue you point out when OtherReallyBigObjectTypeUnion is a union with a top-level type alias. Did you have a perf test somewhere for this?

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - master..37844

Metric master 37844 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 327,746k (± 0.02%) 327,317k (± 0.03%) -430k (- 0.13%) 327,077k 327,519k
Parse Time 1.64s (± 0.54%) 1.64s (± 0.42%) -0.00s (- 0.12%) 1.62s 1.65s
Bind Time 0.89s (± 0.83%) 0.89s (± 1.08%) -0.01s (- 0.56%) 0.87s 0.90s
Check Time 4.79s (± 0.44%) 4.77s (± 0.65%) -0.02s (- 0.36%) 4.72s 4.86s
Emit Time 5.37s (± 0.64%) 5.39s (± 0.63%) +0.02s (+ 0.41%) 5.31s 5.46s
Total Time 12.69s (± 0.34%) 12.68s (± 0.41%) -0.00s (- 0.02%) 12.54s 12.81s
Monaco - node (v10.16.3, x64)
Memory used 327,123k (± 0.01%) 327,096k (± 0.01%) -27k (- 0.01%) 327,025k 327,189k
Parse Time 1.26s (± 0.58%) 1.26s (± 0.39%) +0.00s (+ 0.16%) 1.26s 1.28s
Bind Time 0.79s (± 0.47%) 0.78s (± 0.47%) -0.01s (- 1.15%) 0.77s 0.78s
Check Time 4.78s (± 0.56%) 4.76s (± 0.27%) -0.02s (- 0.46%) 4.73s 4.79s
Emit Time 2.95s (± 0.53%) 2.93s (± 0.51%) -0.01s (- 0.44%) 2.91s 2.96s
Total Time 9.77s (± 0.37%) 9.73s (± 0.23%) -0.04s (- 0.41%) 9.70s 9.78s
TFS - node (v10.16.3, x64)
Memory used 292,132k (± 0.01%) 292,113k (± 0.01%) -19k (- 0.01%) 292,043k 292,193k
Parse Time 0.96s (± 0.69%) 0.96s (± 0.35%) +0.00s (+ 0.00%) 0.95s 0.97s
Bind Time 0.75s (± 0.89%) 0.74s (± 0.87%) -0.01s (- 0.67%) 0.73s 0.76s
Check Time 4.31s (± 0.39%) 4.31s (± 0.37%) -0.00s (- 0.02%) 4.27s 4.34s
Emit Time 3.07s (± 1.16%) 3.07s (± 0.98%) +0.00s (+ 0.10%) 3.01s 3.17s
Total Time 9.09s (± 0.43%) 9.08s (± 0.44%) -0.00s (- 0.03%) 9.03s 9.22s
material-ui - node (v10.16.3, x64)
Memory used 450,673k (± 0.01%) 448,954k (± 0.01%) -1,719k (- 0.38%) 448,843k 449,065k
Parse Time 1.79s (± 0.41%) 1.77s (± 0.43%) -0.01s (- 0.78%) 1.75s 1.79s
Bind Time 0.69s (± 0.65%) 0.68s (± 0.53%) -0.00s (- 0.58%) 0.68s 0.69s
Check Time 12.63s (± 0.56%) 12.46s (± 0.35%) -0.17s (- 1.38%) 12.36s 12.60s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.11s (± 0.45%) 14.92s (± 0.32%) -0.19s (- 1.26%) 14.81s 15.07s
Angular - node (v12.1.0, x64)
Memory used 303,268k (± 0.03%) 302,902k (± 0.03%) -367k (- 0.12%) 302,730k 303,120k
Parse Time 1.59s (± 0.95%) 1.59s (± 0.57%) 0.00s ( 0.00%) 1.57s 1.61s
Bind Time 0.88s (± 0.91%) 0.87s (± 0.87%) -0.00s (- 0.46%) 0.86s 0.90s
Check Time 4.67s (± 0.56%) 4.68s (± 0.56%) +0.01s (+ 0.28%) 4.63s 4.75s
Emit Time 5.56s (± 0.40%) 5.56s (± 0.57%) -0.00s (- 0.02%) 5.47s 5.61s
Total Time 12.69s (± 0.22%) 12.70s (± 0.36%) +0.01s (+ 0.06%) 12.60s 12.80s
Monaco - node (v12.1.0, x64)
Memory used 307,084k (± 0.01%) 307,093k (± 0.01%) +9k (+ 0.00%) 307,043k 307,137k
Parse Time 1.22s (± 0.55%) 1.22s (± 0.64%) +0.00s (+ 0.33%) 1.20s 1.23s
Bind Time 0.75s (± 0.89%) 0.75s (± 0.89%) -0.00s (- 0.40%) 0.73s 0.76s
Check Time 4.59s (± 0.46%) 4.59s (± 0.56%) +0.00s (+ 0.02%) 4.54s 4.64s
Emit Time 2.97s (± 0.50%) 2.99s (± 0.55%) +0.02s (+ 0.81%) 2.96s 3.03s
Total Time 9.53s (± 0.28%) 9.55s (± 0.38%) +0.03s (+ 0.27%) 9.46s 9.60s
TFS - node (v12.1.0, x64)
Memory used 274,482k (± 0.01%) 274,400k (± 0.02%) -82k (- 0.03%) 274,292k 274,523k
Parse Time 0.93s (± 0.73%) 0.93s (± 0.88%) -0.00s (- 0.21%) 0.92s 0.95s
Bind Time 0.72s (± 1.85%) 0.72s (± 1.49%) -0.00s (- 0.69%) 0.70s 0.74s
Check Time 4.23s (± 0.47%) 4.21s (± 0.54%) -0.02s (- 0.50%) 4.17s 4.28s
Emit Time 3.12s (± 0.82%) 3.13s (± 0.96%) +0.01s (+ 0.19%) 3.06s 3.21s
Total Time 9.01s (± 0.46%) 8.99s (± 0.63%) -0.02s (- 0.22%) 8.89s 9.18s
material-ui - node (v12.1.0, x64)
Memory used 428,016k (± 0.05%) 426,314k (± 0.05%) -1,702k (- 0.40%) 425,405k 426,490k
Parse Time 1.76s (± 0.48%) 1.76s (± 0.30%) 0.00s ( 0.00%) 1.75s 1.77s
Bind Time 0.64s (± 0.53%) 0.63s (± 0.98%) -0.01s (- 0.94%) 0.61s 0.64s
Check Time 11.32s (± 0.69%) 11.15s (± 0.82%) -0.17s (- 1.52%) 11.02s 11.40s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 13.72s (± 0.58%) 13.54s (± 0.67%) -0.18s (- 1.33%) 13.40s 13.78s
Angular - node (v8.9.0, x64)
Memory used 322,653k (± 0.02%) 322,354k (± 0.01%) -299k (- 0.09%) 322,291k 322,446k
Parse Time 2.12s (± 0.84%) 2.11s (± 0.39%) -0.01s (- 0.33%) 2.10s 2.13s
Bind Time 0.92s (± 0.39%) 0.92s (± 1.18%) -0.00s (- 0.22%) 0.90s 0.95s
Check Time 5.45s (± 0.98%) 5.44s (± 1.20%) -0.01s (- 0.20%) 5.27s 5.54s
Emit Time 6.27s (± 1.41%) 6.29s (± 2.33%) +0.02s (+ 0.33%) 6.03s 6.79s
Total Time 14.77s (± 0.40%) 14.77s (± 0.77%) +0.00s (+ 0.01%) 14.56s 15.15s
Monaco - node (v8.9.0, x64)
Memory used 325,750k (± 0.02%) 325,767k (± 0.01%) +17k (+ 0.01%) 325,629k 325,858k
Parse Time 1.55s (± 0.42%) 1.55s (± 0.42%) +0.00s (+ 0.26%) 1.53s 1.56s
Bind Time 0.90s (± 0.78%) 0.91s (± 1.31%) +0.01s (+ 0.78%) 0.89s 0.95s
Check Time 5.39s (± 0.80%) 5.37s (± 0.60%) -0.02s (- 0.37%) 5.30s 5.46s
Emit Time 3.51s (± 0.51%) 3.51s (± 0.69%) -0.00s (- 0.14%) 3.43s 3.56s
Total Time 11.36s (± 0.42%) 11.34s (± 0.35%) -0.02s (- 0.15%) 11.26s 11.44s
TFS - node (v8.9.0, x64)
Memory used 291,668k (± 0.02%) 291,679k (± 0.02%) +11k (+ 0.00%) 291,566k 291,793k
Parse Time 1.26s (± 0.51%) 1.26s (± 0.27%) -0.00s (- 0.40%) 1.25s 1.26s
Bind Time 0.75s (± 1.06%) 0.75s (± 0.87%) -0.00s (- 0.53%) 0.73s 0.76s
Check Time 4.95s (± 1.90%) 4.88s (± 1.39%) -0.06s (- 1.29%) 4.81s 5.15s
Emit Time 3.27s (± 2.84%) 3.30s (± 1.93%) +0.03s (+ 0.86%) 3.10s 3.38s
Total Time 10.24s (± 0.83%) 10.19s (± 0.48%) -0.05s (- 0.50%) 10.06s 10.28s
material-ui - node (v8.9.0, x64)
Memory used 453,192k (± 0.01%) 451,790k (± 0.02%) -1,401k (- 0.31%) 451,623k 452,054k
Parse Time 2.13s (± 0.32%) 2.10s (± 0.36%) -0.02s (- 1.03%) 2.09s 2.12s
Bind Time 0.81s (± 1.16%) 0.82s (± 0.84%) +0.01s (+ 0.62%) 0.80s 0.83s
Check Time 16.74s (± 0.73%) 16.60s (± 0.84%) -0.14s (- 0.84%) 16.36s 16.92s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 19.68s (± 0.65%) 19.52s (± 0.72%) -0.16s (- 0.80%) 19.29s 19.86s
Angular - node (v8.9.0, x86)
Memory used 185,798k (± 0.02%) 185,673k (± 0.03%) -124k (- 0.07%) 185,524k 185,760k
Parse Time 2.06s (± 0.46%) 2.05s (± 0.56%) -0.00s (- 0.24%) 2.03s 2.08s
Bind Time 1.08s (± 0.81%) 1.07s (± 0.32%) -0.01s (- 1.20%) 1.06s 1.07s
Check Time 4.99s (± 0.43%) 4.98s (± 0.46%) -0.01s (- 0.22%) 4.95s 5.06s
Emit Time 6.05s (± 1.00%) 6.08s (± 0.91%) +0.03s (+ 0.45%) 6.00s 6.25s
Total Time 14.18s (± 0.48%) 14.18s (± 0.60%) 0.00s ( 0.00%) 14.07s 14.48s
Monaco - node (v8.9.0, x86)
Memory used 185,579k (± 0.02%) 185,547k (± 0.02%) -33k (- 0.02%) 185,454k 185,664k
Parse Time 1.59s (± 0.37%) 1.60s (± 0.60%) +0.00s (+ 0.06%) 1.57s 1.62s
Bind Time 0.76s (± 0.62%) 0.77s (± 0.95%) +0.01s (+ 0.66%) 0.76s 0.79s
Check Time 5.41s (± 0.57%) 5.42s (± 0.47%) +0.01s (+ 0.20%) 5.37s 5.47s
Emit Time 2.90s (± 0.50%) 2.88s (± 1.04%) -0.02s (- 0.73%) 2.82s 2.97s
Total Time 10.66s (± 0.38%) 10.66s (± 0.47%) -0.00s (- 0.03%) 10.57s 10.83s
TFS - node (v8.9.0, x86)
Memory used 167,069k (± 0.03%) 167,067k (± 0.02%) -2k (- 0.00%) 166,965k 167,153k
Parse Time 1.29s (± 0.93%) 1.28s (± 0.35%) -0.01s (- 0.85%) 1.27s 1.29s
Bind Time 0.71s (± 1.33%) 0.71s (± 0.47%) -0.01s (- 0.70%) 0.70s 0.72s
Check Time 4.65s (± 0.51%) 4.66s (± 0.78%) +0.01s (+ 0.15%) 4.58s 4.74s
Emit Time 3.03s (± 2.56%) 3.04s (± 1.85%) +0.00s (+ 0.07%) 2.98s 3.23s
Total Time 9.70s (± 1.11%) 9.69s (± 0.57%) -0.01s (- 0.09%) 9.58s 9.82s
material-ui - node (v8.9.0, x86)
Memory used 256,668k (± 0.01%) 255,882k (± 0.01%) -786k (- 0.31%) 255,793k 255,944k
Parse Time 2.19s (± 0.68%) 2.19s (± 0.51%) -0.00s (- 0.05%) 2.16s 2.21s
Bind Time 0.68s (± 0.72%) 0.69s (± 1.50%) +0.01s (+ 1.17%) 0.67s 0.72s
Check Time 15.38s (± 0.65%) 15.25s (± 0.49%) -0.13s (- 0.81%) 15.11s 15.44s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 18.25s (± 0.58%) 18.13s (± 0.34%) -0.12s (- 0.64%) 18.02s 18.32s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-166-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 (v8.9.0, x64)
  • node (v8.9.0, x86)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v8.9.0, x64)
  • material-ui - node (v8.9.0, x86)
Benchmark Name Iterations
Current 37844 10
Baseline master 10

@weswigham
Copy link
Member

Nothing that properly tests it since we started deferring mapped type member type instantiation.

@ahejlsberg ahejlsberg merged commit d9ad27f into master Apr 29, 2020
@ahejlsberg ahejlsberg deleted the optimizeInstantiateType branch April 29, 2020 00:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

3 participants