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

Don't clear _children on NodeArrays #58069

Merged

Conversation

jakebailey
Copy link
Member

@jakebailey jakebailey commented Apr 3, 2024

Noticed this in #58045; _children is never read by anyone from arrays. There isn't a need to clear it. And clearing it probably causes worse perf as we're tacking yet another random prop on.

No doubt, we won't see any perf change in the tester since this only affected incremental mode, but it's probably real in the editor.

@typescript-bot typescript-bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Apr 3, 2024
@jakebailey jakebailey changed the title Don't clear _children on ArrayNodes Don't clear _children on NodeArrays Apr 3, 2024
@jakebailey
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Apr 3, 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

@jakebailey
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
Angular - node (v18.15.0, x64)
Memory used 295,675k (± 0.01%) 295,653k (± 0.01%) ~ 295,625k 295,690k p=0.173 n=6
Parse Time 3.93s (± 0.30%) 3.93s (± 0.44%) ~ 3.90s 3.95s p=0.934 n=6
Bind Time 1.23s (± 1.11%) 1.24s (± 0.66%) ~ 1.23s 1.25s p=0.325 n=6
Check Time 12.05s (± 0.55%) 12.05s (± 0.21%) ~ 12.00s 12.07s p=0.745 n=6
Emit Time 10.50s (± 0.13%) 10.47s (± 0.21%) -0.03s (- 0.27%) 10.44s 10.50s p=0.040 n=6
Total Time 27.71s (± 0.19%) 27.68s (± 0.10%) ~ 27.65s 27.72s p=0.286 n=6
Compiler-Unions - node (v18.15.0, x64)
Memory used 194,415k (± 0.95%) 193,958k (± 1.07%) ~ 191,974k 195,935k p=0.689 n=6
Parse Time 2.04s (± 1.97%) 2.03s (± 1.72%) ~ 1.99s 2.09s p=0.628 n=6
Bind Time 1.08s (± 1.08%) 1.08s (± 0.75%) ~ 1.07s 1.09s p=0.498 n=6
Check Time 13.93s (± 0.75%) 13.91s (± 0.43%) ~ 13.84s 14.02s p=0.936 n=6
Emit Time 3.86s (± 0.45%) 3.87s (± 0.65%) ~ 3.84s 3.91s p=0.463 n=6
Total Time 20.91s (± 0.66%) 20.90s (± 0.27%) ~ 20.81s 20.95s p=0.810 n=6
Monaco - node (v18.15.0, x64)
Memory used 347,431k (± 0.00%) 347,447k (± 0.01%) ~ 347,418k 347,466k p=0.199 n=6
Parse Time 3.69s (± 1.02%) 3.69s (± 0.56%) ~ 3.67s 3.73s p=0.368 n=6
Bind Time 1.37s (± 0.60%) 1.37s (± 0.55%) ~ 1.36s 1.38s p=0.340 n=6
Check Time 10.17s (± 0.49%) 10.19s (± 0.20%) ~ 10.16s 10.22s p=0.250 n=6
Emit Time 6.02s (± 0.30%) 6.02s (± 0.57%) ~ 5.98s 6.08s p=0.871 n=6
Total Time 21.25s (± 0.31%) 21.28s (± 0.26%) ~ 21.18s 21.33s p=0.336 n=6
TFS - node (v18.15.0, x64)
Memory used 302,803k (± 0.01%) 302,813k (± 0.01%) ~ 302,785k 302,848k p=0.520 n=6
Parse Time 2.97s (± 0.58%) 2.96s (± 1.11%) ~ 2.92s 3.01s p=0.625 n=6
Bind Time 1.48s (± 0.55%) 1.48s (± 0.51%) ~ 1.47s 1.49s p=0.340 n=6
Check Time 9.27s (± 0.35%) 9.25s (± 0.47%) ~ 9.20s 9.32s p=0.519 n=6
Emit Time 5.30s (± 0.74%) 5.32s (± 0.66%) ~ 5.28s 5.38s p=0.191 n=6
Total Time 19.00s (± 0.36%) 19.01s (± 0.24%) ~ 18.95s 19.07s p=1.000 n=6
material-ui - node (v18.15.0, x64)
Memory used 510,249k (± 0.02%) 510,178k (± 0.01%) ~ 510,123k 510,220k p=0.128 n=6
Parse Time 3.94s (± 0.45%) 3.95s (± 0.76%) ~ 3.92s 4.01s p=0.413 n=6
Bind Time 1.46s (± 0.91%) 1.47s (± 0.80%) ~ 1.45s 1.48s p=0.216 n=6
Check Time 25.42s (± 0.40%) 25.43s (± 0.33%) ~ 25.37s 25.55s p=0.936 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 30.81s (± 0.33%) 30.85s (± 0.34%) ~ 30.76s 31.02s p=0.261 n=6
mui-docs - node (v18.15.0, x64)
Memory used 1,744,894k (± 0.00%) 1,744,938k (± 0.00%) ~ 1,744,879k 1,744,998k p=0.230 n=6
Parse Time 6.59s (± 0.55%) 6.61s (± 0.42%) ~ 6.58s 6.65s p=0.572 n=6
Bind Time 2.39s (± 0.82%) 2.38s (± 0.62%) ~ 2.36s 2.40s p=0.869 n=6
Check Time 56.75s (± 0.14%) 56.70s (± 0.26%) ~ 56.52s 56.93s p=0.520 n=6
Emit Time 0.13s (± 3.87%) 0.13s (± 0.00%) ~ 0.13s 0.13s p=0.174 n=6
Total Time 65.86s (± 0.13%) 65.83s (± 0.25%) ~ 65.64s 66.07s p=0.521 n=6
self-build-src - node (v18.15.0, x64)
Memory used 2,399,990k (± 0.02%) 2,400,060k (± 0.02%) ~ 2,399,690k 2,401,227k p=0.378 n=6
Parse Time 4.99s (± 0.66%) 4.98s (± 1.00%) ~ 4.92s 5.06s p=0.748 n=6
Bind Time 1.92s (± 0.83%) 1.92s (± 1.16%) ~ 1.89s 1.95s p=1.000 n=6
Check Time 33.92s (± 0.37%) 33.89s (± 0.34%) ~ 33.81s 34.09s p=0.422 n=6
Emit Time 2.69s (± 1.48%) 2.70s (± 1.17%) ~ 2.66s 2.75s p=1.000 n=6
Total Time 43.53s (± 0.29%) 43.52s (± 0.30%) ~ 43.38s 43.72s p=0.936 n=6
self-compiler - node (v18.15.0, x64)
Memory used 416,345k (± 0.01%) 416,320k (± 0.01%) ~ 416,273k 416,375k p=0.298 n=6
Parse Time 2.75s (± 0.58%) 2.73s (± 2.45%) ~ 2.60s 2.78s p=0.871 n=6
Bind Time 1.08s (± 0.38%) 1.10s (± 4.94%) ~ 1.07s 1.21s p=0.858 n=6
Check Time 15.43s (± 0.38%) 15.45s (± 0.26%) ~ 15.38s 15.49s p=0.748 n=6
Emit Time 1.12s (± 1.18%) 1.12s (± 1.78%) ~ 1.09s 1.15s p=0.739 n=6
Total Time 20.38s (± 0.24%) 20.39s (± 0.28%) ~ 20.29s 20.44s p=0.572 n=6
vscode - node (v18.15.0, x64)
Memory used 2,907,120k (± 0.00%) 2,907,170k (± 0.00%) ~ 2,907,136k 2,907,239k p=0.378 n=6
Parse Time 15.93s (± 0.41%) 15.90s (± 0.25%) ~ 15.86s 15.96s p=0.571 n=6
Bind Time 5.05s (± 0.37%) 5.03s (± 0.55%) ~ 5.00s 5.07s p=0.294 n=6
Check Time 87.36s (± 0.57%) 87.26s (± 0.35%) ~ 86.92s 87.74s p=0.873 n=6
Emit Time 25.21s (± 9.90%) 23.63s (± 0.55%) ~ 23.39s 23.74s p=0.470 n=6
Total Time 133.54s (± 2.03%) 131.82s (± 0.25%) ~ 131.49s 132.41s p=0.471 n=6
webpack - node (v18.15.0, x64)
Memory used 408,995k (± 0.01%) 408,955k (± 0.02%) ~ 408,895k 409,047k p=0.378 n=6
Parse Time 4.80s (± 0.76%) 4.78s (± 0.80%) ~ 4.75s 4.84s p=0.687 n=6
Bind Time 2.06s (± 0.65%) 2.05s (± 0.59%) ~ 2.04s 2.07s p=0.507 n=6
Check Time 20.91s (± 0.27%) 20.92s (± 0.22%) ~ 20.88s 21.00s p=0.872 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 27.77s (± 0.30%) 27.76s (± 0.26%) ~ 27.67s 27.89s p=0.572 n=6
xstate - node (v18.15.0, x64)
Memory used 513,554k (± 0.02%) 513,546k (± 0.03%) ~ 513,404k 513,772k p=0.810 n=6
Parse Time 4.91s (± 0.44%) 4.92s (± 0.24%) ~ 4.90s 4.93s p=0.292 n=6
Bind Time 2.32s (± 0.92%) 2.31s (± 0.85%) ~ 2.29s 2.34s p=0.368 n=6
Check Time 4.30s (± 0.41%) 4.34s (± 0.59%) +0.03s (+ 0.77%) 4.31s 4.37s p=0.046 n=6
Emit Time 0.11s (± 3.65%) 0.11s (± 0.00%) ~ 0.11s 0.11s p=0.405 n=6
Total Time 11.64s (± 0.35%) 11.67s (± 0.27%) ~ 11.64s 11.71s p=0.228 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • Angular - node (v18.15.0, x64)
  • Compiler-Unions - node (v18.15.0, x64)
  • Monaco - node (v18.15.0, x64)
  • TFS - node (v18.15.0, x64)
  • material-ui - node (v18.15.0, x64)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - node (v18.15.0, x64)
  • xstate - 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 3,563ms (± 0.43%) 3,563ms (± 0.34%) ~ 3,546ms 3,582ms p=1.000 n=6
Req 2 - geterr 8,299ms (± 0.23%) 8,338ms (± 0.32%) +39ms (+ 0.47%) 8,298ms 8,379ms p=0.031 n=6
Req 3 - references 474ms (± 0.46%) 476ms (± 1.07%) ~ 472ms 486ms p=0.570 n=6
Req 4 - navto 407ms (± 0.18%) 407ms (± 0.36%) ~ 404ms 408ms p=0.604 n=6
Req 5 - completionInfo count 1,357 (± 0.00%) 1,357 (± 0.00%) ~ 1,357 1,357 p=1.000 n=6
Req 5 - completionInfo 131ms (± 0.42%) 130ms (± 0.58%) ~ 129ms 131ms p=0.137 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 3,707ms (± 0.79%) 3,706ms (± 1.07%) ~ 3,668ms 3,775ms p=0.810 n=6
Req 2 - geterr 6,118ms (± 0.55%) 6,105ms (± 0.23%) ~ 6,086ms 6,120ms p=0.688 n=6
Req 3 - references 494ms (± 0.31%) 497ms (± 1.15%) ~ 491ms 505ms p=0.463 n=6
Req 4 - navto 446ms (± 0.78%) 446ms (± 0.51%) ~ 441ms 447ms p=0.397 n=6
Req 5 - completionInfo count 1,519 (± 0.00%) 1,519 (± 0.00%) ~ 1,519 1,519 p=1.000 n=6
Req 5 - completionInfo 109ms (± 0.00%) 108ms (± 1.23%) ~ 106ms 109ms p=0.176 n=6
xstateTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 3,893ms (± 0.39%) 3,891ms (± 1.03%) ~ 3,852ms 3,964ms p=0.378 n=6
Req 2 - geterr 2,430ms (± 1.04%) 2,440ms (± 0.60%) ~ 2,422ms 2,455ms p=0.230 n=6
Req 3 - references 150ms (± 2.66%) 148ms (± 0.93%) ~ 146ms 149ms p=0.369 n=6
Req 4 - navto 557ms (± 1.10%) 553ms (± 1.05%) ~ 544ms 560ms p=0.467 n=6
Req 5 - completionInfo count 2,079 (± 0.00%) 2,079 (± 0.00%) ~ 2,079 2,079 p=1.000 n=6
Req 5 - completionInfo 454ms (± 2.07%) 452ms (± 1.48%) ~ 446ms 465ms p=1.000 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)
  • xstateTSServer - 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 222.85ms (± 0.18%) 222.86ms (± 0.19%) ~ 220.50ms 227.50ms p=0.976 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time 227.54ms (± 0.16%) 227.36ms (± 0.17%) -0.18ms (- 0.08%) 225.53ms 231.98ms p=0.000 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time 329.69ms (± 0.31%) 329.64ms (± 0.31%) ~ 321.60ms 338.92ms p=0.292 n=600
typescript-startup - node (v18.15.0, x64)
Execution time 329.74ms (± 0.31%) 329.78ms (± 0.30%) ~ 321.46ms 338.83ms p=0.964 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

@jakebailey
Copy link
Member Author

Not significant, but still an ok cleanup and one that will probably happen due to #58045 anyway...

@jakebailey jakebailey merged commit 772c290 into microsoft:main Apr 4, 2024
25 checks passed
@jakebailey jakebailey deleted the dont-clear-children-on-nodearrays branch April 4, 2024 14:52
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.

3 participants