Skip to content

Skip markLinkedReferences import elision walk entirely in some common cases - #59398

Merged
Wesley Wigham (weswigham) merged 3 commits into
microsoft:mainfrom
weswigham:marked-linked-references-fast-skips
Jul 23, 2024
Merged

Skip markLinkedReferences import elision walk entirely in some common cases#59398
Wesley Wigham (weswigham) merged 3 commits into
microsoft:mainfrom
weswigham:marked-linked-references-fast-skips

Conversation

@weswigham

@weswighamWesley Wigham (weswigham) commented Jul 23, 2024

Copy link
Copy Markdown
Member

This should just improve performance of js->js emit with noCheck on.

@weswigham

Copy link
Copy Markdown
MemberAuthor

TypeScript Bot (@typescript-bot) test this
TypeScript Bot (@typescript-bot) perf test this

@typescript-bot

TypeScript Bot (typescript-bot) commented Jul 23, 2024

Copy link
Copy Markdown
Contributor

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

CommandStatusResults
perf test this✅ Started👀 Results
test top400✅ Started✅ Results
user test this✅ Started✅ Results
run dt✅ Started✅ Results
perf test this faster✅ Started👀 Results

checkIdentifierCalculateNodeCheckFlags(node, s);
nodeLinks.calculatedFlags |= NodeCheckFlags.ConstructorReference;
if (isIdentifier(node)) {
nodeLinks.calculatedFlags |= NodeCheckFlags.BlockScopedBindingInLoop | NodeCheckFlags.CapturedBlockScopedBinding; // Can't set on all arbitrary nodes (these nodes have this flag set by `checkSingleBlockScopeBinding` only)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

The references walk was implicitly calling checkComputedPropertyName on the computed properties, which was calculating the CapturedBlockScopedBinding and BlockScopedBindingInLoop flag on them, which was hiding the fact that preemptively setting these computed flags on all nodes we walk while walking only identifiers would block us from calculating them properly for computed and private names. So that's fixed here, too.

}

function markLinkedReferences(file: SourceFile) {
if (ts.isSourceFileJS(file)) return; // JS files don't use reference calculations as they don't do import ellision, no need to calculate it

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Hopefully we remember to remove this if/when decorator metadata becomes a thing again with non-experimental decorators, since preserving imports used for those types I think will end up mattering even in JS files (cross this issue with that other bug I fixed).

Actually, does this work for JSX files? or does this trigger that other bug where we don't realize that import "react" is going to happen?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

e.g. should we copy the test from #59193 and make it a .jsx file?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

In JSX files the import "react" we add to the output is injected by the emitter based on compiler options and doesn't depend on the refrenced-ness of the synthetic import thing in the checker (you can check pretty easily by seeing there's no resolver.isReferencedAliasDeclaration type calls in the jsx transform - only in the ts transform, and only if the file isn't JS).

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

But yeah, should circumstances change and shouldEmitAliasDeclaration in ts.ts changes, this'd need to change to match.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Fun fact: I tried skipping this walk for files with nothing in their .imports member, too (so no references to external modules), but tests showed that we still needed import elision calculation done even in files with no external imports, because local elision on export import a = b statements is done using the same logic and relies on this running to work. And there's no simple way to know if those are present without traversing the tree anyway. 🤷‍♂️ I could have done if (!length(file.imports) && !(file.transformFlags & TransformFlags.TypeScript)) return; (since export import = is TS syntax), but how many .ts files don't contain any typescript syntax - hardly seems worth it.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Ah, I guess it doesn't matter because we don't care about exact errors in this case, yeah.

@typescript-bot

Copy link
Copy Markdown
Contributor

Wesley Wigham (@weswigham)
The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
MetricbaselineprDeltaBestWorstp-value
Compiler-Unions - node (v18.15.0, x64)
Errors3030~~~p=1.000 n=6
Symbols62,15362,153~~~p=1.000 n=6
Types50,24250,242~~~p=1.000 n=6
Memory used193,501k (± 0.94%)193,496k (± 0.96%)~192,268k195,949kp=0.689 n=6
Parse Time1.31s (± 0.89%)1.30s (± 0.63%)~1.29s1.31sp=0.401 n=6
Bind Time0.71s0.71s~~~p=1.000 n=6
Check Time9.56s (± 0.64%)9.53s (± 0.24%)~9.49s9.55sp=0.572 n=6
Emit Time2.74s (± 0.81%)2.74s (± 0.55%)~2.72s2.76sp=0.620 n=6
Total Time14.31s (± 0.49%)14.29s (± 0.18%)~14.25s14.32sp=0.374 n=6
angular-1 - node (v18.15.0, x64)
Errors77~~~p=1.000 n=6
Symbols945,532945,532~~~p=1.000 n=6
Types409,507409,507~~~p=1.000 n=6
Memory used1,221,164k (± 0.00%)1,221,140k (± 0.00%)~1,221,073k1,221,178kp=0.230 n=6
Parse Time6.59s (± 0.31%)6.60s (± 0.45%)~6.57s6.65sp=0.624 n=6
Bind Time1.86s (± 0.28%)1.86s (± 0.56%)~1.84s1.87sp=0.928 n=6
Check Time31.05s (± 0.42%)31.11s (± 0.19%)~31.01s31.17sp=0.297 n=6
Emit Time14.99s (± 0.69%)15.10s (± 0.57%)~14.96s15.19sp=0.126 n=6
Total Time54.48s (± 0.36%)54.67s (± 0.17%)~54.53s54.80sp=0.066 n=6
mui-docs - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols2,276,4042,276,404~~~p=1.000 n=6
Types949,156949,156~~~p=1.000 n=6
Memory used2,208,333k (± 0.00%)2,208,300k (± 0.00%)~2,208,239k2,208,415kp=0.230 n=6
Parse Time7.85s (± 0.31%)7.83s (± 0.40%)~7.79s7.87sp=0.372 n=6
Bind Time2.74s (± 0.36%)2.73s (± 0.60%)~2.71s2.76sp=0.315 n=6
Check Time86.02s (± 0.32%)86.42s (± 0.49%)~85.98s86.90sp=0.230 n=6
Emit Time0.17s (± 2.98%)0.17s (± 3.72%)~0.16s0.18sp=0.386 n=6
Total Time96.78s (± 0.27%)97.16s (± 0.44%)~96.68s97.62sp=0.230 n=6
self-build-src - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols1,231,1621,231,162~~~p=1.000 n=6
Types266,119266,119~~~p=1.000 n=6
Memory used2,348,768k (± 0.01%)2,348,671k (± 0.01%)~2,348,294k2,349,041kp=0.810 n=6
Parse Time5.08s (± 0.69%)5.09s (± 0.92%)~5.02s5.15sp=0.936 n=6
Bind Time1.90s (± 0.96%)1.90s (± 0.79%)~1.89s1.92sp=1.000 n=6
Check Time34.63s (± 0.26%)34.71s (± 0.36%)~34.58s34.91sp=0.199 n=6
Emit Time3.34s (± 0.77%)3.32s (± 1.28%)~3.27s3.36sp=0.378 n=6
Total Time44.97s (± 0.24%)45.02s (± 0.39%)~44.84s45.31sp=0.936 n=6
self-build-src-public-api - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols1,231,1621,231,162~~~p=1.000 n=6
Types266,119266,119~~~p=1.000 n=6
Memory used2,423,087k (± 0.03%)2,541,819k (±11.41%)~2,422,996k3,134,265kp=0.378 n=6
Parse Time6.30s (± 0.68%)6.37s (± 1.25%)~6.26s6.48sp=0.092 n=6
Bind Time2.04s (± 0.57%)2.02s (± 0.97%)~2.00s2.04sp=0.050 n=6
Check Time41.43s (± 0.47%)41.51s (± 0.46%)~41.32s41.79sp=0.298 n=6
Emit Time4.00s (± 1.15%)3.99s (± 1.77%)~3.91s4.07sp=0.872 n=6
Total Time53.78s (± 0.46%)53.87s (± 0.43%)~53.64s54.17sp=0.378 n=6
self-compiler - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols259,215259,215~~~p=1.000 n=6
Types105,867105,867~~~p=1.000 n=6
Memory used429,592k (± 0.03%)429,629k (± 0.03%)~429,500k429,820kp=0.471 n=6
Parse Time3.35s (± 0.79%)3.34s (± 0.58%)~3.32s3.37sp=0.627 n=6
Bind Time1.32s (± 1.42%)1.32s (± 1.41%)~1.29s1.34sp=0.935 n=6
Check Time18.05s (± 0.34%)18.02s (± 0.32%)~17.96s18.12sp=0.422 n=6
Emit Time1.62s (± 2.09%)1.62s (± 2.57%)~1.58s1.68sp=0.872 n=6
Total Time24.33s (± 0.34%)24.30s (± 0.31%)~24.23s24.40sp=0.470 n=6
ts-pre-modules - node (v18.15.0, x64)
Errors3535~~~p=1.000 n=6
Symbols224,931224,931~~~p=1.000 n=6
Types94,14694,146~~~p=1.000 n=6
Memory used369,994k (± 0.01%)370,016k (± 0.03%)~369,866k370,119kp=0.471 n=6
Parse Time2.76s (± 0.93%)2.78s (± 0.68%)~2.76s2.80sp=0.329 n=6
Bind Time1.58s (± 1.31%)1.58s (± 0.62%)~1.57s1.59sp=0.677 n=6
Check Time15.66s (± 0.34%)15.62s (± 0.33%)~15.54s15.68sp=0.260 n=6
Emit Time0.00s0.00s~~~p=1.000 n=6
Total Time20.01s (± 0.42%)19.98s (± 0.30%)~19.88s20.04sp=0.686 n=6
vscode - node (v18.15.0, x64)
Errors1111~~~p=1.000 n=6
Symbols2,986,6592,986,659~~~p=1.000 n=6
Types1,027,4991,027,499~~~p=1.000 n=6
Memory used3,111,106k (± 0.00%)3,111,123k (± 0.00%)~3,111,051k3,111,238kp=0.936 n=6
Parse Time13.84s (± 0.31%)13.80s (± 0.28%)~13.74s13.83sp=0.125 n=6
Bind Time4.29s (± 0.18%)4.30s (± 0.17%)~4.29s4.31sp=0.062 n=6
Check Time79.38s (± 0.22%)79.04s (± 0.17%)-0.33s (- 0.42%)78.88s79.20sp=0.006 n=6
Emit Time20.48s (± 0.54%)20.41s (± 0.44%)~20.33s20.56sp=0.378 n=6
Total Time117.99s (± 0.20%)117.55s (± 0.18%)-0.45s (- 0.38%)117.26s117.80sp=0.016 n=6
webpack - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols267,603267,603~~~p=1.000 n=6
Types109,105109,105~~~p=1.000 n=6
Memory used412,374k (± 0.01%)412,346k (± 0.03%)~412,207k412,544kp=0.378 n=6
Parse Time4.74s (± 0.26%)4.75s (± 0.44%)~4.72s4.77sp=0.624 n=6
Bind Time2.13s (± 0.49%)2.13s (± 0.46%)~2.11s2.14sp=0.788 n=6
Check Time20.77s (± 0.26%)20.78s (± 0.36%)~20.71s20.92sp=1.000 n=6
Emit Time0.00s0.00s~~~p=1.000 n=6
Total Time27.64s (± 0.16%)27.65s (± 0.31%)~27.59s27.82sp=0.935 n=6
xstate-main - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols511,803511,803~~~p=1.000 n=6
Types162,088162,088~~~p=1.000 n=6
Memory used448,993k (± 0.08%)449,049k (± 0.08%)~448,567k449,442kp=1.000 n=6
Parse Time3.17s (± 1.04%)3.16s (± 0.48%)~3.14s3.18sp=0.513 n=6
Bind Time1.16s (± 0.44%)1.17s (± 0.90%)~1.15s1.18sp=0.794 n=6
Check Time17.24s (± 0.39%)17.20s (± 0.38%)~17.12s17.30sp=0.375 n=6
Emit Time0.00s0.00s~~~p=1.000 n=6
Total Time21.57s (± 0.26%)21.53s (± 0.25%)~21.46s21.61sp=0.230 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)
BenchmarkNameIterations
Currentpr6
Baselinebaseline6

Developer Information:

Download Benchmarks

@typescript-bot

Copy link
Copy Markdown
Contributor

Hey Wesley Wigham (@weswigham), the results of running the DT tests are ready.

Everything looks the same!

You can check the log here.

@typescript-bot

Copy link
Copy Markdown
Contributor

Wesley Wigham (@weswigham) Here are the results of running the user tests with tsc comparing main and refs/pull/59398/merge:

Everything looks good!

@typescript-bot

Copy link
Copy Markdown
Contributor

Wesley Wigham (@weswigham)
The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
MetricbaselineprDeltaBestWorstp-value
Compiler-Unions - node (v18.15.0, x64)
Errors3030~~~p=1.000 n=6
Symbols62,15362,153~~~p=1.000 n=6
Types50,24250,242~~~p=1.000 n=6
Memory used193,369k (± 0.96%)193,433k (± 0.93%)~192,211k195,833kp=0.810 n=6
Parse Time1.95s (± 0.77%)1.96s (± 0.53%)~1.95s1.98sp=0.161 n=6
Bind Time1.07s (± 1.09%)1.05s (± 1.20%)-0.02s (- 1.72%)1.04s1.07sp=0.041 n=6
Check Time14.00s (± 0.57%)13.99s (± 0.41%)~13.93s14.08sp=0.520 n=6
Emit Time4.16s (± 4.63%)4.00s (± 1.40%)~3.89s4.05sp=0.076 n=6
Total Time21.18s (± 0.81%)20.99s (± 0.28%)-0.18s (- 0.87%)20.90s21.06sp=0.025 n=6
angular-1 - node (v18.15.0, x64)
Errors77~~~p=1.000 n=6
Symbols945,532945,532~~~p=1.000 n=6
Types409,507409,507~~~p=1.000 n=6
Memory used1,221,118k (± 0.00%)1,221,126k (± 0.00%)~1,221,109k1,221,147kp=0.936 n=6
Parse Time7.86s (± 0.56%)7.88s (± 0.71%)~7.80s7.97sp=0.746 n=6
Bind Time2.22s (± 0.78%)2.21s (± 0.74%)~2.20s2.24sp=0.086 n=6
Check Time36.28s (± 0.25%)36.34s (± 0.40%)~36.05s36.46sp=0.148 n=6
Emit Time17.77s (± 0.53%)17.85s (± 0.38%)~17.76s17.95sp=0.148 n=6
Total Time64.13s (± 0.22%)64.28s (± 0.30%)~63.91s64.48sp=0.066 n=6
mui-docs - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols2,276,4042,276,404~~~p=1.000 n=6
Types949,156949,156~~~p=1.000 n=6
Memory used2,208,279k (± 0.00%)2,208,316k (± 0.00%)~2,208,201k2,208,376kp=0.261 n=6
Parse Time7.83s (± 0.36%)7.81s (± 0.28%)~7.78s7.84sp=0.331 n=6
Bind Time2.73s (± 0.30%)2.73s (± 0.64%)~2.72s2.76sp=0.730 n=6
Check Time85.87s (± 0.17%)85.61s (± 0.54%)~85.13s86.29sp=0.298 n=6
Emit Time0.17s (± 4.89%)0.17s (± 4.38%)~0.16s0.18sp=0.306 n=6
Total Time96.59s (± 0.13%)96.33s (± 0.47%)~95.87s97.02sp=0.199 n=6
self-build-src - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols1,231,1621,231,162~~~p=1.000 n=6
Types266,119266,119~~~p=1.000 n=6
Memory used2,349,643k (± 0.03%)2,349,990k (± 0.03%)~2,349,446k2,351,441kp=1.000 n=6
Parse Time7.56s (± 0.86%)7.59s (± 1.10%)~7.45s7.69sp=0.471 n=6
Bind Time2.79s (± 0.90%)2.79s (± 0.54%)~2.77s2.81sp=0.686 n=6
Check Time50.45s (± 0.39%)50.47s (± 0.25%)~50.33s50.69sp=0.936 n=6
Emit Time4.92s (± 2.01%)4.80s (± 1.70%)~4.65s4.89sp=0.093 n=6
Total Time65.71s (± 0.40%)65.66s (± 0.20%)~65.47s65.85sp=0.936 n=6
self-build-src-public-api - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols1,231,1621,231,162~~~p=1.000 n=6
Types266,119266,119~~~p=1.000 n=6
Memory used2,422,990k (± 0.02%)2,423,012k (± 0.02%)~2,422,617k2,423,961kp=0.936 n=6
Parse Time5.29s (± 0.49%)5.30s (± 0.95%)~5.25s5.38sp=0.873 n=6
Bind Time1.69s (± 0.45%)1.69s (± 0.58%)~1.68s1.70sp=0.554 n=6
Check Time35.24s (± 0.19%)35.22s (± 0.24%)~35.10s35.35sp=0.873 n=6
Emit Time3.35s (± 2.06%)3.34s (± 1.03%)~3.29s3.37sp=0.375 n=6
Total Time45.58s (± 0.12%)45.55s (± 0.27%)~45.42s45.76sp=0.173 n=6
self-compiler - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols259,215259,215~~~p=1.000 n=6
Types105,867105,867~~~p=1.000 n=6
Memory used429,604k (± 0.03%)429,804k (± 0.06%)~429,551k430,079kp=0.128 n=6
Parse Time3.35s (± 0.45%)3.35s (± 0.72%)~3.32s3.39sp=0.871 n=6
Bind Time1.32s (± 1.14%)1.33s (± 1.13%)~1.30s1.34sp=0.737 n=6
Check Time18.07s (± 0.22%)18.07s (± 0.55%)~17.97s18.25sp=0.872 n=6
Emit Time1.62s (± 1.97%)1.66s (± 1.52%)+0.04s (+ 2.57%)1.62s1.69sp=0.044 n=6
Total Time24.36s (± 0.30%)24.41s (± 0.42%)~24.26s24.55sp=0.297 n=6
ts-pre-modules - node (v18.15.0, x64)
Errors3535~~~p=1.000 n=6
Symbols224,931224,931~~~p=1.000 n=6
Types94,14694,146~~~p=1.000 n=6
Memory used370,035k (± 0.03%)370,055k (± 0.03%)~369,956k370,247kp=0.810 n=6
Parse Time2.28s (± 1.23%)2.30s (± 0.93%)~2.27s2.32sp=0.332 n=6
Bind Time1.32s (± 1.47%)1.33s (± 1.30%)~1.31s1.35sp=0.557 n=6
Check Time13.29s (± 0.35%)13.30s (± 0.33%)~13.23s13.37sp=0.629 n=6
Emit Time0.00s0.00s~~~p=1.000 n=6
Total Time16.90s (± 0.47%)16.93s (± 0.37%)~16.88s17.03sp=0.198 n=6
vscode - node (v18.15.0, x64)
Errors1111~~~p=1.000 n=6
Symbols2,986,6592,986,659~~~p=1.000 n=6
Types1,027,4991,027,499~~~p=1.000 n=6
Memory used3,111,115k (± 0.00%)3,111,141k (± 0.00%)~3,111,098k3,111,188kp=0.336 n=6
Parse Time11.58s (± 0.15%)11.57s (± 0.33%)~11.51s11.61sp=0.515 n=6
Bind Time3.63s (± 2.16%)3.65s (± 2.57%)~3.58s3.78sp=0.805 n=6
Check Time68.59s (± 0.47%)68.51s (± 0.39%)~68.24s68.89sp=0.810 n=6
Emit Time17.36s (± 0.63%)17.40s (± 0.58%)~17.26s17.52sp=0.810 n=6
Total Time101.17s (± 0.38%)101.13s (± 0.27%)~100.83s101.47sp=0.810 n=6
webpack - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols267,603267,603~~~p=1.000 n=6
Types109,105109,105~~~p=1.000 n=6
Memory used412,341k (± 0.02%)412,364k (± 0.02%)~412,285k412,487kp=0.575 n=6
Parse Time4.75s (± 0.46%)4.75s (± 0.69%)~4.72s4.80sp=0.517 n=6
Bind Time2.12s (± 0.63%)2.12s (± 0.69%)~2.10s2.14sp=0.681 n=6
Check Time20.77s (± 0.36%)20.76s (± 0.45%)~20.68s20.93sp=0.748 n=6
Emit Time0.00s0.00s~~~p=1.000 n=6
Total Time27.64s (± 0.28%)27.62s (± 0.40%)~27.52s27.83sp=0.470 n=6
xstate-main - node (v18.15.0, x64)
Errors00~~~p=1.000 n=6
Symbols511,803511,803~~~p=1.000 n=6
Types162,088162,088~~~p=1.000 n=6
Memory used449,122k (± 0.08%)449,092k (± 0.07%)~448,690k449,347kp=0.810 n=6
Parse Time3.15s (± 0.71%)3.16s (± 0.79%)~3.12s3.19sp=0.466 n=6
Bind Time1.16s (± 0.35%)1.16s (± 0.54%)~1.15s1.17sp=0.673 n=6
Check Time17.22s (± 0.38%)17.21s (± 0.50%)~17.12s17.36sp=0.628 n=6
Emit Time0.00s0.00s~~~p=1.000 n=6
Total Time21.54s (± 0.31%)21.54s (± 0.33%)~21.46s21.67sp=1.000 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)
BenchmarkNameIterations
Currentpr6
Baselinebaseline6

tsserver

Comparison Report - baseline..pr
MetricbaselineprDeltaBestWorstp-value
Compiler-UnionsTSServer - node (v18.15.0, x64)
Req 1 - updateOpen2,298ms (± 0.42%)2,297ms (± 0.35%)~2,282ms2,306msp=0.630 n=6
Req 2 - geterr5,156ms (± 0.14%)5,169ms (± 0.37%)~5,135ms5,192msp=0.066 n=6
Req 3 - references260ms (± 0.86%)261ms (± 0.78%)~257ms262msp=0.390 n=6
Req 4 - navto227ms (± 0.94%)227ms (± 0.51%)~226ms229msp=0.677 n=6
Req 5 - completionInfo count1,3571,357~~~p=1.000 n=6
Req 5 - completionInfo80ms (± 5.92%)82ms (± 4.04%)~77ms85msp=0.511 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen2,393ms (± 0.31%)2,424ms (± 1.51%)~2,384ms2,468msp=0.226 n=6
Req 2 - geterr3,887ms (± 0.26%)3,886ms (± 0.31%)~3,869ms3,903msp=1.000 n=6
Req 3 - references272ms (± 0.87%)273ms (± 0.50%)~271ms275msp=0.370 n=6
Req 4 - navto234ms (± 3.13%)230ms (± 2.19%)~227ms240msp=0.801 n=6
Req 5 - completionInfo count1,5191,519~~~p=1.000 n=6
Req 5 - completionInfo70ms (± 3.99%)76ms (±10.97%)~66ms84msp=0.465 n=6
xstate-main-1-tsserver - node (v18.15.0, x64)
Req 1 - updateOpen5,177ms (± 0.19%)5,173ms (± 0.24%)~5,158ms5,192msp=0.573 n=6
Req 2 - geterr1,118ms (± 0.88%)1,115ms (± 0.94%)~1,105ms1,132msp=0.686 n=6
Req 3 - references85ms (± 4.20%)86ms (± 0.95%)~84ms86msp=0.591 n=6
Req 4 - navto443ms (± 0.31%)443ms (± 0.17%)~442ms444msp=0.672 n=6
Req 5 - completionInfo count3,4173,417~~~p=1.000 n=6
Req 5 - completionInfo816ms (± 1.57%)832ms (± 0.77%)+15ms (+ 1.88%)820ms838msp=0.045 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)
BenchmarkNameIterations
Currentpr6
Baselinebaseline6

startup

Comparison Report - baseline..pr
MetricbaselineprDeltaBestWorstp-value
tsc-startup - node (v18.15.0, x64)
Execution time188.42ms (± 0.18%)188.31ms (± 0.16%)-0.11ms (- 0.06%)186.68ms191.43msp=0.003 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time231.01ms (± 0.14%)231.13ms (± 0.16%)+0.12ms (+ 0.05%)229.79ms236.78msp=0.005 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time227.74ms (± 0.16%)228.13ms (± 0.18%)+0.39ms (+ 0.17%)226.71ms236.15msp=0.000 n=600
typescript-startup - node (v18.15.0, x64)
Execution time336.67ms (± 0.31%)336.88ms (± 0.31%)+0.22ms (+ 0.06%)327.94ms344.81msp=0.010 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)
BenchmarkNameIterations
Currentpr6
Baselinebaseline6

Developer Information:

Download Benchmarks

@typescript-bot

Copy link
Copy Markdown
Contributor

Wesley Wigham (@weswigham) Here are the results of running the top 400 repos with tsc comparing main and refs/pull/59398/merge:

Everything looks good!

@weswigham
Wesley Wigham (weswigham) merged commit 5bd4e00 into microsoft:mainJul 23, 2024
@weswigham

Copy link
Copy Markdown
MemberAuthor

TypeScript Bot (@typescript-bot) cherry-pick this into release-5.5

@typescript-bot

TypeScript Bot (typescript-bot) commented Jul 23, 2024

Copy link
Copy Markdown
Contributor

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

CommandStatusResults
cherry-pick this into release-5.5✅ Started✅ Results

@typescript-bot

Copy link
Copy Markdown
Contributor

Hey, Wesley Wigham (@weswigham)! I've created #59404 for you.

@jakebailey

Copy link
Copy Markdown
Member

5.5.4 already went out, are we doing a 5.5.5?

@DanielRosenwasser

Copy link
Copy Markdown
Member

Yeah, I think we should try to unbreak that repro.

@microsoftMicrosoft (microsoft) locked as resolved and limited conversation to collaborators Oct 16, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Author: TeamFor Uncommitted BugPR for untriaged, rejected, closed or missing bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@weswigham@typescript-bot@jakebailey@DanielRosenwasser