Skip to content

Cache the length of arrays in core utilities. #58920

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

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

DanielRosenwasser
Copy link
Member

Follow-up to #58873 to measure effects of caching the length on all arrays passed into our utilities.

@typescript-bot typescript-bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Jun 18, 2024
@DanielRosenwasser
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jun 18, 2024

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
perf test this ✅ Started 👀 Results

@typescript-bot
Copy link
Collaborator

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

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - node (v18.15.0, x64)
Errors 30 30 ~ ~ ~ p=1.000 n=6
Symbols 62,153 62,153 ~ ~ ~ p=1.000 n=6
Types 50,242 50,242 ~ ~ ~ p=1.000 n=6
Memory used 192,699k (± 0.78%) 193,881k (± 0.98%) ~ 192,104k 195,807k p=0.378 n=6
Parse Time 1.95s (± 0.50%) 1.95s (± 1.09%) ~ 1.91s 1.97s p=0.315 n=6
Bind Time 1.05s (± 0.77%) 1.06s (± 0.84%) ~ 1.05s 1.07s p=0.270 n=6
Check Time 13.82s (± 0.38%) 13.84s (± 0.43%) ~ 13.76s 13.92s p=0.421 n=6
Emit Time 4.08s (± 3.22%) 4.09s (± 3.84%) ~ 4.00s 4.41s p=0.935 n=6
Total Time 20.90s (± 0.59%) 20.95s (± 0.60%) ~ 20.84s 21.17s p=0.520 n=6
angular-1 - node (v18.15.0, x64)
Errors 5 5 ~ ~ ~ p=1.000 n=6
Symbols 944,114 944,114 ~ ~ ~ p=1.000 n=6
Types 407,051 407,051 ~ ~ ~ p=1.000 n=6
Memory used 1,218,312k (± 0.00%) 1,218,268k (± 0.00%) ~ 1,218,206k 1,218,306k p=0.093 n=6
Parse Time 7.93s (± 0.60%) 7.90s (± 0.58%) ~ 7.85s 7.96s p=0.419 n=6
Bind Time 2.21s (± 0.78%) 2.21s (± 0.53%) ~ 2.20s 2.23s p=0.742 n=6
Check Time 35.65s (± 0.29%) 35.69s (± 0.28%) ~ 35.50s 35.79s p=0.688 n=6
Emit Time 16.01s (± 0.89%) 16.07s (± 0.27%) ~ 15.99s 16.11s p=0.229 n=6
Total Time 61.80s (± 0.34%) 61.86s (± 0.27%) ~ 61.55s 62.05s p=0.467 n=6
mui-docs - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 2,133,542 2,133,542 ~ ~ ~ p=1.000 n=6
Types 926,558 926,558 ~ ~ ~ p=1.000 n=6
Memory used 2,115,732k (± 0.01%) 2,115,769k (± 0.01%) ~ 2,115,605k 2,116,001k p=0.471 n=6
Parse Time 9.69s (± 0.36%) 9.71s (± 0.17%) ~ 9.69s 9.73s p=0.258 n=6
Bind Time 3.38s (± 0.78%) 3.37s (± 0.59%) ~ 3.35s 3.40s p=0.464 n=6
Check Time 102.76s (± 0.47%) 102.37s (± 0.41%) ~ 102.00s 103.09s p=0.261 n=6
Emit Time 0.20s (± 4.15%) 0.19s (± 5.34%) ~ 0.18s 0.21s p=0.546 n=6
Total Time 116.04s (± 0.39%) 115.64s (± 0.37%) ~ 115.27s 116.37s p=0.199 n=6
self-build-src - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,230,726 1,230,755 +29 (+ 0.00%) ~ ~ p=0.001 n=6
Types 261,163 261,163 ~ ~ ~ p=1.000 n=6
Memory used 2,346,907k (± 0.02%) 2,345,968k (± 0.05%) ~ 2,343,692k 2,347,347k p=0.128 n=6
Parse Time 5.95s (± 0.43%) 5.97s (± 1.52%) ~ 5.85s 6.11s p=0.471 n=6
Bind Time 2.26s (± 0.43%) 2.27s (± 0.76%) ~ 2.25s 2.30s p=0.413 n=6
Check Time 39.75s (± 0.22%) 39.74s (± 0.18%) ~ 39.69s 39.88s p=1.000 n=6
Emit Time 3.11s (± 1.14%) 3.15s (± 3.81%) ~ 3.04s 3.35s p=1.000 n=6
Total Time 51.09s (± 0.21%) 51.14s (± 0.27%) ~ 50.93s 51.34s p=0.575 n=6
self-build-src-public-api - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,230,726 1,230,755 +29 (+ 0.00%) ~ ~ p=0.001 n=6
Types 261,163 261,163 ~ ~ ~ p=1.000 n=6
Memory used 2,422,882k (± 0.04%) 2,423,552k (± 0.02%) ~ 2,422,835k 2,424,172k p=0.230 n=6
Parse Time 6.23s (± 1.22%) 6.21s (± 0.80%) ~ 6.14s 6.26s p=0.630 n=6
Bind Time 2.02s (± 0.93%) 2.02s (± 1.49%) ~ 1.97s 2.06s p=0.261 n=6
Check Time 39.92s (± 0.24%) 40.06s (± 0.52%) ~ 39.87s 40.46s p=0.126 n=6
Emit Time 3.20s (± 2.70%) 3.14s (± 1.61%) -0.06s (- 1.82%) 3.04s 3.17s p=0.045 n=6
Total Time 51.37s (± 0.29%) 51.44s (± 0.53%) ~ 51.20s 51.94s p=1.000 n=6
self-compiler - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 258,573 258,602 +29 (+ 0.01%) ~ ~ p=0.001 n=6
Types 104,819 104,819 ~ ~ ~ p=1.000 n=6
Memory used 428,169k (± 0.01%) 428,210k (± 0.01%) ~ 428,151k 428,251k p=0.298 n=6
Parse Time 4.10s (± 0.58%) 4.09s (± 0.91%) ~ 4.03s 4.13s p=0.872 n=6
Bind Time 1.62s (± 1.43%) 1.62s (± 0.96%) ~ 1.60s 1.64s p=1.000 n=6
Check Time 21.94s (± 0.46%) 21.95s (± 0.25%) ~ 21.89s 22.04s p=0.872 n=6
Emit Time 1.69s (± 1.48%) 1.73s (± 1.79%) +0.04s (+ 2.57%) 1.69s 1.78s p=0.035 n=6
Total Time 29.35s (± 0.19%) 29.39s (± 0.34%) ~ 29.26s 29.52s p=0.574 n=6
ts-pre-modules - node (v18.15.0, x64)
Errors 35 35 ~ ~ ~ p=1.000 n=6
Symbols 224,565 224,565 ~ ~ ~ p=1.000 n=6
Types 93,734 93,734 ~ ~ ~ p=1.000 n=6
Memory used 369,486k (± 0.03%) 369,459k (± 0.01%) ~ 369,434k 369,491k p=0.748 n=6
Parse Time 2.78s (± 0.62%) 2.76s (± 1.24%) ~ 2.71s 2.81s p=0.332 n=6
Bind Time 1.59s (± 1.01%) 1.58s (± 0.65%) ~ 1.57s 1.60s p=0.365 n=6
Check Time 15.42s (± 0.16%) 15.49s (± 0.39%) +0.07s (+ 0.45%) 15.44s 15.58s p=0.024 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 19.79s (± 0.10%) 19.83s (± 0.34%) ~ 19.74s 19.94s p=0.226 n=6
vscode - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 2,865,581 2,865,581 ~ ~ ~ p=1.000 n=6
Types 970,775 970,775 ~ ~ ~ p=1.000 n=6
Memory used 3,028,142k (± 0.00%) 3,028,123k (± 0.00%) ~ 3,028,071k 3,028,256k p=0.377 n=6
Parse Time 13.49s (± 0.33%) 13.53s (± 0.30%) ~ 13.49s 13.60s p=0.261 n=6
Bind Time 4.14s (± 0.36%) 4.13s (± 0.43%) ~ 4.11s 4.16s p=0.256 n=6
Check Time 72.70s (± 0.27%) 72.80s (± 0.62%) ~ 72.47s 73.62s p=0.810 n=6
Emit Time 23.92s (± 0.62%) 23.85s (± 0.43%) ~ 23.72s 23.95s p=0.335 n=6
Total Time 114.25s (± 0.21%) 114.31s (± 0.46%) ~ 113.86s 115.19s p=0.689 n=6
webpack - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 266,914 266,914 ~ ~ ~ p=1.000 n=6
Types 108,685 108,685 ~ ~ ~ p=1.000 n=6
Memory used 411,324k (± 0.01%) 411,313k (± 0.02%) ~ 411,262k 411,466k p=0.378 n=6
Parse Time 3.79s (± 0.46%) 3.80s (± 0.43%) ~ 3.78s 3.82s p=0.934 n=6
Bind Time 1.68s (± 0.32%) 1.68s (± 0.24%) ~ 1.67s 1.68s p=0.054 n=6
Check Time 16.83s (± 0.34%) 16.78s (± 0.19%) ~ 16.73s 16.82s p=0.145 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 22.31s (± 0.26%) 22.25s (± 0.08%) ~ 22.24s 22.29s p=0.077 n=6
xstate-main - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 523,765 523,765 ~ ~ ~ p=1.000 n=6
Types 178,055 178,055 ~ ~ ~ p=1.000 n=6
Memory used 461,687k (± 0.06%) 461,874k (± 0.07%) ~ 461,380k 462,239k p=0.471 n=6
Parse Time 3.17s (± 0.99%) 3.18s (± 0.55%) ~ 3.16s 3.21s p=0.934 n=6
Bind Time 1.19s (± 0.69%) 1.18s (± 0.35%) ~ 1.18s 1.19s p=0.248 n=6
Check Time 18.00s (± 0.55%) 17.98s (± 0.43%) ~ 17.91s 18.11s p=0.468 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 22.36s (± 0.49%) 22.34s (± 0.41%) ~ 22.25s 22.50s p=0.470 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • Compiler-Unions - node (v18.15.0, x64)
  • angular-1 - node (v18.15.0, x64)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-build-src-public-api - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • ts-pre-modules - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - node (v18.15.0, x64)
  • xstate-main - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

tsserver

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-UnionsTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,743ms (± 0.88%) 2,743ms (± 0.37%) ~ 2,725ms 2,755ms p=0.936 n=6
Req 2 - geterr 6,961ms (± 9.67%) 6,982ms (±10.36%) ~ 6,026ms 7,510ms p=0.810 n=6
Req 3 - references 372ms (±10.72%) 374ms (± 9.20%) ~ 321ms 397ms p=0.936 n=6
Req 4 - navto 331ms (± 7.67%) 328ms (± 9.10%) ~ 267ms 341ms p=0.454 n=6
Req 5 - completionInfo count 1,357 1,357 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 129ms (± 8.31%) 127ms (± 4.22%) ~ 116ms 131ms p=0.332 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 3,160ms (±11.08%) 3,193ms (±10.01%) ~ 2,855ms 3,599ms p=0.936 n=6
Req 2 - geterr 5,220ms (±10.40%) 4,856ms (±11.00%) ~ 4,483ms 5,546ms p=0.229 n=6
Req 3 - references 389ms (± 9.47%) 377ms (±10.73%) ~ 331ms 417ms p=0.687 n=6
Req 4 - navto 327ms (± 7.85%) 311ms (±11.90%) ~ 277ms 358ms p=0.567 n=6
Req 5 - completionInfo count 1,519 1,519 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 99ms (± 7.74%) 99ms (± 8.21%) ~ 82ms 102ms p=1.000 n=6
xstate-main-1-tsserver - node (v18.15.0, x64)
Req 1 - updateOpen 7,669ms (± 0.27%) 7,661ms (± 0.24%) ~ 7,645ms 7,698ms p=0.470 n=6
Req 2 - geterr 1,705ms (± 0.82%) 1,679ms (± 0.97%) ~ 1,660ms 1,703ms p=0.065 n=6
Req 3 - references 112ms (± 0.98%) 113ms (± 0.74%) ~ 112ms 114ms p=0.282 n=6
Req 4 - navto 584ms (± 1.49%) 587ms (± 1.41%) ~ 573ms 596ms p=0.521 n=6
Req 5 - completionInfo count 3,413 3,413 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 1,240ms (± 1.78%) 1,248ms (± 1.12%) ~ 1,223ms 1,260ms p=0.332 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • CompilerTSServer - node (v18.15.0, x64)
  • Compiler-UnionsTSServer - node (v18.15.0, x64)
  • xstate-main-1-tsserver - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
tsc-startup - node (v18.15.0, x64)
Execution time 187.04ms (± 0.16%) 187.04ms (± 0.19%) ~ 185.42ms 192.14ms p=0.356 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time 296.31ms (± 0.25%) 296.15ms (± 0.25%) -0.16ms (- 0.05%) 289.41ms 301.79ms p=0.017 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time 288.41ms (± 0.29%) 288.45ms (± 0.30%) ~ 280.83ms 295.55ms p=0.434 n=600
typescript-startup - node (v18.15.0, x64)
Execution time 288.09ms (± 0.28%) 288.11ms (± 0.31%) ~ 281.12ms 297.44ms p=0.962 n=600
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • tsc-startup - node (v18.15.0, x64)
  • tsserver-startup - node (v18.15.0, x64)
  • tsserverlibrary-startup - node (v18.15.0, x64)
  • typescript-startup - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

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

Successfully merging this pull request may close these issues.

2 participants