Skip to content

LSP perf optimizations - #64877

Draft
Andrew Branch (andrewbranch) wants to merge 12 commits into
microsoft:mainfrom
andrewbranch:lsp-perf
Draft

Andrew Branch (andrewbranch) wants to merge 12 commits into
microsoft:mainfrom
andrewbranch:lsp-perf

Conversation

@andrewbranch

@andrewbranch Andrew Branch (andrewbranch) commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

I let Copilot spin for a while on LSP performance, profiling the vscode repo. Several of these changes affect batch compilation too.

Baseline (vscode)

Bench time/op B/op allocs/op
InitialLoad 1.2–2.5 s 3.04 GB (2595 MB retained) –
EditOpenFile 13–22 ms 14 MB –
EditImports 115–146 ms 277 MB 3.26 M
WatchChange 6–8 ms – –
CreateDeleteFile 335–375 ms 291 MB 3.46 M
TsconfigChange ~339 ms – –

Heap of initial load: ~95% of retained memory is ASTs/symbols in the parse cache (core compiler).
Project-package retained structures are small; the project package's leverage is mostly transient
allocation and per-change latency.

Cumulative result (merge-base 3789ddb vs HEAD, vscode, interleaved runs, n=6)

Bench time B/op allocs/op retained
InitialLoad ~ (1.29 → 1.15 s, noisy) −3.7% −15.6% −2 MB (of 2.4 GB)
EditOpenFile (fast clone) ~ −4.9% −23.3% −24% (14.0 → 10.7 MB)
WatchChange (fast clone from disk) ~ (3–4 ms, noisy) −16.0% −90.4% –
EditImports (program rebuild) ~/−19%* −37.6% −41.8% −17%
CreateDeleteFile (file-name reload + rebuild) −43% −38.6% −41.2% −12%
TsconfigChange (ParsedCommandLine + rebuild) −40% −38.9% −41.4% −12%
AutoImportInitial ~ −3.1% −0.5% −15.6% (19.8 → 16.7 MB)
AutoImportEdit ~ −4.8% −44.1% –

* EditImports: 165 → 97 ms in a direct A/B of the final fix; ~ in the noisy cumulative run.
Timings were taken with load average 10–20 from other processes; B/op and allocs/op are exact.

Experiments

1. dirty.SyncMap.LoadClean fast path in snapshotFSBuilder — COMMITTED (0a35842; benchmarks in dd354e654af)

dirty.SyncMap.Load allocates a SyncMapEntry wrapper on every hit in the immutable base map.
snapshotFSBuilder's GetFileByPath/FileExists/GetAccessibleEntries only need read access, so
added LoadClean returning the base value without allocation when the key is not dirty.

  • EditImports allocs −4.7%; CreateDeleteFile allocs −4.6%, time −4.6%; B/op −1.9%.

2. parseTask hot/cold split (compiler/filesparser.go) — COMMITTED (cea07f4)

Program rebuild profile showed parseTask allocations prominent. Removed two dead fields and moved
load-result fields to a lazily allocated *parseTaskResult (only tasks that actually load need
them; failed-lookup/duplicate tasks don't). parseTask 368 B → 184 B.

  • EditImports / CreateDeleteFile B/op −7.4%, allocs +0.3%. Timing within noise.

3. Concurrent directory prefetch in vfsmatch — COMMITTED (39911ff)

CPU profile of CreateDeleteFile/TsconfigChange: ~80% of updateProgram CPU is
ReloadFileNamesOfParsedCommandLine → vfsmatch.matchFileNames → sequential os.ReadDir
over the whole include tree (snapshot cachedvfs is fresh per snapshot, so it hits disk every time).
Added a prefetch phase that reads the same directories concurrently, then the original
serial walk runs unchanged using the prefetched entries (falling back to the host for anything
missing). Results/ordering/symlink-cycle semantics are unchanged.

  • CreateDeleteFile 374 → 218 ms, TsconfigChange 354 → 178 ms (p=0.002, wide variance).
  • B/op +1%, allocs +0.5% (prefetch bookkeeping).
  • Also benefits initial load and tsc CLI config parsing.

4. sourceFS seen-file tracking + overlayFS no-clone — COMMITTED (039e5dd)

sourceFS.FileExists computed a PathKey for tracking and again for the lookup, and stored into
seenFiles unconditionally. Compute the key once, Load before Store; overlayFS stopped cloning
its overlay map on read paths.

  • Rebuild benches allocs −2–3%, B/op −2%.

5. packagejson.InfoCache cheap Clone — COMMITTED (14e9882; RWMutex variant squashed away)

ReuseProgram (every edit / watch change) clones the package.json info cache; cloning a
sync.Map entry-by-entry allocated per entry (~6.6k allocs per WatchChange).

  • First version (RWMutex + plain map): WatchChange −30% time, −90% allocs; EditOpenFile −14% time.
    But EditImports regressed +38% time (119 → 165 ms): RWMutex reader-count contention during
    parallel module resolution. Found only via a cumulative merge-base A/B + bisect — lesson: every
    concurrency-touching change needs a rebuild-heavy timing check.
  • Final version: immutable base map read lock-free + collections.SyncMap overlay for new entries;
    Clone = maps.Clone(base) + overlay merge. Keeps clone wins; EditImports 165 → 97 ms
    (faster than the original 119 ms), −2% allocs. -race clean.

6. autoimport Export 248 → 192 B — COMMITTED (b975755)

Registry retained memory is dominated by Export (~52k exports on vscode). ModuleID stores one
string + kind instead of two strings; ExportSyntax, lsutil.ScriptElementKind narrowed to uint8;
fields reordered to remove padding.

  • AutoImportInitial retained −15.7% (19.8 → 16.7 MB). Time/allocs unchanged.

7. tsoptions extension-priority sibling keys — COMMITTED (c09c9b0)

getFileNamesFromConfigSpecs built ChangeExtension + canonical key for each higher/lower-priority
sibling of every wildcard file and appended a flattened group slice per file (~57% of file-name
expansion allocs). Now derives sibling keys from one canonical key (stemKey + ext, falling back to
the old path for unknown extensions / dynamic names), iterating groups in place.
Verified with a temporary 20k-case randomized differential test against the old implementation.

  • TsconfigChange / CreateDeleteFile B/op −2.1%, allocs −1.8%.

8. Module resolution: resolve candidate once — COMMITTED (de88374)

resolutionCandidateFromEncodedPaths resolved the same relative specifier twice (ResolveFile and
ResolveDirectory) whenever the file and directory inputs were identical (always, outside dynamic
files); both produce identical strings. Resolve once.

  • TsconfigChange B/op −12.8%, allocs −13.2%, time −10%; InitialLoad allocs −5%, time −11%.

9. tspath leading ./ / ../ fast path — COMMITTED (9496c1e)

ResolveFile/ResolveDirectory for ./x, ../../x concatenated then normalized (2 allocs). Now
walks the directory up for leading dot segments and concatenates once; falls back for any other dot
segments or ascending past root. 200k-case randomized differential test (disk, drive, URL, UNC,
dynamic roots) against the old path.

  • TsconfigChange B/op −12.1%, allocs −12.9%, time −8%; InitialLoad allocs −4.8%, time −9%.

10. parseTask references resolution PackageId — COMMITTED (02e334f)

parseTask/resolvedRef carried a 64 B inline PackageId (empty for nearly all files). Now a
pointer into the already-heap-allocated resolution (nil when empty). parseTask 184 → 136 B
(192 → 144 size class), no new allocations.

  • TsconfigChange B/op −3.8%.

11. Co-allocated referenced-file include reasons — COMMITTED (570e356)

Each import allocated FileIncludeReason (56 B) + referencedFileData (32 B) separately; both are
retained by the program. fileIncludeKind → uint8 (48 B) and one constructor co-allocates both
(80 B, 1 alloc). Net −13 lines.

  • TsconfigChange allocs −4.8%, B/op −1%; InitialLoad retained −2 MB.

12. parallelWorkGroup.Queue wrapper closure — COMMITTED (d248609)

Queue wrapped fn in func(){ fn() } before wg.Go. Pass fn directly.

  • TsconfigChange allocs −5.6%, InitialLoad allocs −2%. One-line change, benefits all parallel work.

dirty.SyncMap.Load allocates an entry wrapper on every hit in the base map.
snapshotFSBuilder reads only need the value, so add LoadClean, which returns
base values without allocating when the key is not dirty.

Perf (vscode, unpinned; indicative): EditImports -4.7% allocs; CreateDeleteFile -4.6% allocs,
-1.9% B/op.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
parseTask is allocated for every file reference edge, but most edges point
at files that are already loaded. Moving load results into a side record and
removing two unused fields shrinks parseTask from 368B to 184B.

Perf (vscode, unpinned; indicative): EditImports and CreateDeleteFile -7.4% B/op, +0.3% allocs;
time within noise.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
@andrewbranch

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) perf test this

@typescript-automation

typescript-automation Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

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

Command Status Results
perf test this ✅ Started 👀 Results

@typescript-automation

Copy link
Copy Markdown
Contributor

Andrew Branch (@andrewbranch)
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 - native
Errors 41 41 ~ ~ ~ p=1.000 n=12
Symbols 115,276 115,276 ~ ~ ~ p=1.000 n=12
Types 79,613 79,613 ~ ~ ~ p=1.000 n=12
Memory Used 113,591k (± 0.05%) 113,606k (± 0.06%) ~ 113,452k 113,759k p=0.660 n=12
Memory Allocs 2,212,531 (± 0.01%) 2,212,213 (± 0.01%) -318 (- 0.01%) 2,211,984 2,212,601 p=0.001 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.049s (± 3.78%) 0.049s (± 2.36%) ~ 0.045s 0.051s p=0.920 n=12
Bind Time 0.018s (± 8.26%) 0.017s (± 8.52%) ~ 0.014s 0.022s p=0.135 n=12
Check Time 0.562s (± 1.04%) 0.559s (± 0.99%) ~ 0.550s 0.579s p=0.096 n=12
Emit Time 0.328s (± 2.17%) 0.322s (± 2.24%) ~ 0.309s 0.342s p=0.213 n=12
Total Time 0.965s (± 0.80%) 0.955s (± 0.74%) ~ 0.937s 0.973s p=0.057 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 846,983 (± 0.06%) 846,942 (± 0.04%) ~ 846,110 848,011 p=0.977 n=12
Types 247,031 (± 0.00%) 247,031 (± 0.00%) ~ 247,030 247,033 p=0.982 n=12
Memory Used 596,501k (± 0.04%) 596,189k (± 0.03%) -313k (- 0.05%) 595,847k 596,751k p=0.028 n=12
Memory Allocs 13,141,800 (± 0.04%) 13,078,059 (± 0.07%) -63,742 (- 0.49%) 13,066,562 13,111,453 p=0.000 n=12
Config Time 0.020s 0.015s 🟩-0.005s (-25.00%) ~ ~ p=0.000 n=12
Parse Time 0.282s (± 1.83%) 0.290s (± 2.15%) +0.008s (+ 2.75%) 0.272s 0.310s p=0.046 n=12
Bind Time 0.102s (±10.03%) 0.081s (± 6.83%) 🟩-0.021s (-20.79%) 0.071s 0.097s p=0.002 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.860s (± 1.54%) 1.879s (± 1.65%) ~ 1.784s 1.923s p=0.164 n=12
Total Time 2.288s (± 1.34%) 2.282s (± 1.47%) ~ 2.183s 2.343s p=0.843 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,331,983 4,331,983 ~ ~ ~ p=1.000 n=12
Types 1,370,520 1,370,520 ~ ~ ~ p=1.000 n=12
Memory Used 2,625,492k (± 0.06%) 2,624,302k (± 0.07%) ~ 2,620,262k 2,628,363k p=0.443 n=12
Memory Allocs 27,694,010 (± 0.07%) 27,439,831 (± 0.07%) -254,179 (- 0.92%) 27,385,334 27,502,889 p=0.000 n=12
Config Time 0.020s (± 0.90%) 0.015s 🟩-0.005s (-25.31%) ~ ~ p=0.000 n=12
Parse Time 0.580s (± 3.00%) 0.558s (± 3.05%) ~ 0.511s 0.593s p=0.060 n=12
Bind Time 0.003s (±24.75%) 0.003s (±24.75%) ~ 0.002s 0.006s p=1.000 n=12
Check Time 8.658s (± 0.28%) 8.565s (± 0.34%) -0.093s (- 1.07%) 8.518s 8.689s p=0.000 n=12
Emit Time 0.706s (±10.82%) 0.595s (±13.32%) 🟩-0.111s (-15.69%) 0.498s 0.801s p=0.027 n=12
Total Time 10.901s (± 0.52%) 10.620s (± 1.03%) -0.281s (- 2.58%) 10.416s 10.856s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,388,680 1,388,680 ~ ~ ~ p=1.000 n=12
Types 441,862 441,862 ~ ~ ~ p=1.000 n=12
Memory Used 1,312,862k (± 0.64%) 1,316,123k (± 0.70%) ~ 1,296,678k 1,336,647k p=0.443 n=12
Memory Allocs 78,130,520 (± 0.14%) 77,907,481 (± 0.09%) -223,039 (- 0.29%) 77,603,392 78,084,042 p=0.004 n=12
Config Time 0.005s (±11.96%) 0.007s (± 9.00%) 🔻+0.002s (+44.64%) 0.005s 0.008s p=0.000 n=12
Parse Time 0.311s (± 2.04%) 0.302s (± 2.21%) ~ 0.286s 0.320s p=0.081 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 2.005s (± 0.48%) 2.010s (± 0.42%) ~ 1.991s 2.036s p=0.325 n=12
Emit Time 0.359s (± 4.50%) 0.345s (± 4.33%) ~ 0.302s 0.389s p=0.311 n=12
Total Time 23.910s (± 0.68%) 23.690s (± 0.66%) -0.220s (- 0.92%) 23.156s 23.976s p=0.045 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 334,953 ~ ~ ~ p=1.000 n=12
Types 197,616 197,616 ~ ~ ~ p=1.000 n=12
Memory Used 247,540k (± 0.03%) 247,488k (± 0.03%) ~ 247,245k 247,669k p=0.111 n=12
Memory Allocs 4,329,822 (± 0.01%) 4,326,464 (± 0.01%) -3,358 (- 0.08%) 4,325,511 4,327,582 p=0.000 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.112s (± 4.75%) 0.116s (± 4.45%) ~ 0.100s 0.124s p=0.172 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.954s (± 0.45%) 0.957s (± 0.56%) ~ 0.945s 0.973s p=0.503 n=12
Emit Time 0.156s (± 3.77%) 0.148s (± 5.88%) ~ 0.129s 0.173s p=0.164 n=12
Total Time 1.278s (± 0.58%) 1.277s (± 0.93%) ~ 1.246s 1.304s p=0.943 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 303,834 ~ ~ ~ p=1.000 n=12
Types 181,663 181,663 ~ ~ ~ p=1.000 n=12
Memory Used 215,260k (± 0.02%) 215,234k (± 0.01%) ~ 215,162k 215,324k p=0.291 n=12
Memory Allocs 1,401,676 (± 0.02%) 1,401,236 (± 0.01%) -439 (- 0.03%) 1,400,774 1,401,743 p=0.006 n=12
Config Time 0.000s 0.000s (±217.90%) ~ 0.000s 0.001s p=1.000 n=12
Parse Time 0.097s (± 3.53%) 0.096s (± 5.19%) ~ 0.088s 0.111s p=0.450 n=12
Bind Time 0.040s (±11.70%) 0.040s (± 9.88%) ~ 0.030s 0.048s p=0.701 n=12
Check Time 0.745s (± 0.94%) 0.743s (± 1.02%) ~ 0.726s 0.762s p=0.681 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.897s (± 0.76%) 0.895s (± 0.96%) ~ 0.877s 0.926s p=0.766 n=12
vscode - native
Errors 396 396 ~ ~ ~ p=1.000 n=12
Symbols 12,483,880 12,483,880 ~ ~ ~ p=1.000 n=12
Types 4,085,331 4,085,331 ~ ~ ~ p=1.000 n=12
Memory Used 5,845,353k (± 0.03%) 5,843,014k (± 0.01%) -2,339k (- 0.04%) 5,840,755k 5,844,615k p=0.006 n=12
Memory Allocs 59,433,051 (± 0.02%) 58,315,740 (± 0.01%) -1,117,310 (- 1.88%) 58,306,315 58,334,956 p=0.000 n=12
Config Time 0.076s (± 0.41%) 0.049s (± 0.66%) 🟩-0.027s (-35.15%) 0.049s 0.050s p=0.000 n=12
Parse Time 1.816s (± 1.93%) 1.825s (± 2.42%) ~ 1.691s 1.944s p=0.799 n=12
Bind Time 0.717s (±14.97%) 0.594s (±14.70%) 🟩-0.123s (-17.19%) 0.503s 0.954s p=0.024 n=12
Check Time 15.749s (± 1.09%) 15.911s (± 0.98%) ~ 15.443s 16.158s p=0.236 n=12
Emit Time 5.809s (± 6.98%) 5.454s (± 4.56%) ~ 4.875s 6.361s p=0.128 n=12
Total Time 24.259s (± 1.25%) 23.917s (± 0.67%) -0.342s (- 1.41%) 23.585s 24.600s p=0.039 n=12
webpack - native
Errors 598 598 ~ ~ ~ p=1.000 n=12
Symbols 1,343,495 1,343,495 ~ ~ ~ p=1.000 n=12
Types 651,492 651,492 ~ ~ ~ p=1.000 n=12
Memory Used 855,319k (± 0.01%) 855,121k (± 0.02%) -198k (- 0.02%) 854,687k 855,444k p=0.039 n=12
Memory Allocs 6,770,093 (± 0.01%) 6,724,154 (± 0.02%) -45,939 (- 0.68%) 6,720,654 6,730,113 p=0.000 n=12
Config Time 0.008s (± 4.38%) 0.006s (± 2.98%) 🟩-0.001s (-18.89%) 0.006s 0.007s p=0.000 n=12
Parse Time 0.239s (± 3.29%) 0.236s (± 4.35%) ~ 0.212s 0.270s p=0.541 n=12
Bind Time 0.062s (±12.73%) 0.077s (±18.28%) ~ 0.054s 0.109s p=0.070 n=12
Check Time 2.324s (± 0.50%) 2.269s (± 0.70%) -0.054s (- 2.35%) 2.228s 2.299s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.664s (± 0.33%) 2.619s (± 0.44%) -0.045s (- 1.68%) 2.583s 2.639s p=0.000 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,060,810 1,060,810 ~ ~ ~ p=1.000 n=12
Types 389,671 389,671 ~ ~ ~ p=1.000 n=12
Memory Used 471,799k (± 0.02%) 471,755k (± 0.03%) ~ 471,531k 472,243k p=0.377 n=12
Memory Allocs 4,216,884 (± 0.11%) 4,191,660 (± 0.16%) -25,224 (- 0.60%) 4,175,456 4,218,103 p=0.000 n=12
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Parse Time 0.109s (± 2.96%) 0.107s (± 2.74%) ~ 0.103s 0.118s p=0.464 n=12
Bind Time 0.035s (±17.20%) 0.035s (±18.46%) ~ 0.026s 0.056s p=0.719 n=12
Check Time 0.907s (± 1.25%) 0.906s (± 1.01%) ~ 0.887s 0.933s p=0.876 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.059s (± 1.17%) 1.057s (± 0.89%) ~ 1.026s 1.081s p=0.899 n=12
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • mui-docs - native
  • strada-build-src - native
  • strada-compiler - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

lsp

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-UnionsLSP - native
Req 1 - updateOpen 11ms (±20.59%) 12ms (±12.45%) ~ 9ms 15ms p=0.056 n=12
Req 2 - geterr 541ms (± 0.36%) 535ms (± 0.28%) -6ms (- 1.06%) 532ms 539ms p=0.000 n=12
Req 3 - references 44ms (± 4.33%) 47ms (± 4.01%) 🔻+2ms (+ 5.08%) 43ms 51ms p=0.028 n=12
Req 4 - navto 16ms (± 1.90%) 17ms (± 5.69%) ~ 16ms 21ms p=0.369 n=12
Req 5 - completionInfo count 1,363 1,363 ~ ~ ~ p=1.000 n=12
Req 5 - completionInfo 16ms (± 7.93%) 16ms (± 8.87%) ~ 14ms 21ms p=0.304 n=12
CompilerLSP - native
Req 1 - updateOpen 13ms (±13.31%) 11ms (±13.99%) ~ 10ms 17ms p=0.440 n=12
Req 2 - geterr 284ms (± 0.67%) 285ms (± 0.48%) ~ 281ms 288ms p=0.940 n=12
Req 3 - references 49ms (± 1.17%) 49ms (± 1.44%) ~ 48ms 51ms p=0.760 n=12
Req 4 - navto 19ms (± 8.20%) 18ms (± 6.17%) ~ 17ms 22ms p=0.139 n=12
Req 5 - completionInfo count 1,525 1,525 ~ ~ ~ p=1.000 n=12
Req 5 - completionInfo 20ms (±11.45%) 20ms (±11.60%) ~ 15ms 24ms p=0.725 n=12
System info unknown
Hosts
  • native
Scenarios
  • CompilerLSP - native
  • Compiler-UnionsLSP - native
  • xstate-main-1-LSP - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
lsp-startup - native
Execution time 4.66ms (±365.09%) 4.67ms (±365.09%) +0.01ms (+ 0.25%) 0.00ms 472.63ms p=0.000 n=1200
tsgo-startup - native
Execution time 5.67ms (±365.09%) 5.68ms (±365.09%) +0.01ms (+ 0.20%) 0.00ms 572.39ms p=0.000 n=1200
System info unknown
Hosts
  • native
Scenarios
  • lsp-startup - native
  • tsgo-startup - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

Developer Information:

Download Benchmarks

This comment was marked as resolved.

This comment was marked as resolved.

Config file-name expansion read the include tree with sequential ReadDir
calls. Up to GOMAXPROCS readers now read the same directories first
(honoring excludes and depth), then the unchanged ordered walk runs over
the prefetched entries, so results and ordering are identical. The caller
is the first reader and more workers start only while queued directories
outnumber idle ones, so leaf scans start no goroutines. Directories under
overlapping base paths are read once.

Symlinked directories are left to the ordered walk, which owns realpath
deduplication; each directory spelling is read at most once by the
prefetch. A host panic stops the workers and is re-raised on the caller.
With --singleThreaded, config expansion reads directories serially.

Perf (vscode@9c4bcec0bb91, machine under load, interleaved A/B):
CreateDeleteFile 374 -> 218 ms, TsconfigChange 354 -> 178 ms (p=0.002,
n=6, wide variance); +1% B/op, +0.5% allocs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
…files

Also return host directory entries directly from overlayFS when no overlay
directory affects them.

Perf (vscode, unpinned; indicative): program-rebuild benchmarks -2-3% allocs, -2% B/op.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
ReuseProgram clones the package.json info cache on every edit; copying a
sync.Map entry-by-entry allocated per entry. Reads now hit an immutable
base map without locking, new entries go to a sync.Map overlay (first
writer wins), and Clone flattens both into a new base.

Perf (vscode, unpinned; indicative): WatchChange -90% allocs; EditImports
and EditOpenFile time not regressed (an RWMutex variant regressed
EditImports +38% from read-lock contention).

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
Store ModuleID's path/specifier in a single string (only one is ever set),
narrow ExportSyntax and ScriptElementKind to uint8, and reorder small fields
to avoid padding.

Perf (vscode, unpinned; indicative): AutoImportInitial retained memory -15.7% (19.8 -> 16.7 MB);
time and allocs unchanged.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
Perf (vscode, unpinned; indicative): TsconfigChange and CreateDeleteFile -2.1% B/op, -1.8% allocs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
Perf (vscode, unpinned; indicative): TsconfigChange -12.8% B/op, -13.2% allocs;
InitialLoad -5% allocs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
…tring

Perf (vscode, unpinned; indicative): TsconfigChange -12.1% B/op, -12.9% allocs;
InitialLoad -4.8% allocs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
…tes)

Perf (vscode, unpinned; indicative): TsconfigChange -3.8% B/op; allocs unchanged.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
… 80B/1)

Perf (vscode, unpinned; indicative): TsconfigChange -4.8% allocs, -1% B/op; InitialLoad retained
memory -2 MB.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1
Perf (vscode, unpinned; indicative): TsconfigChange -5.6% allocs; InitialLoad -2% allocs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: afcfca01-a049-4749-ad08-1c00c586f6a1

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Concurrent filesystem traversal and compiler-wide representation changes warrant human review, particularly without executed validation.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

@andrewbranch

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) perf test

@typescript-automation

typescript-automation Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

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

Command Status Results
perf test ✅ Started 👀 Results

@typescript-automation

Copy link
Copy Markdown
Contributor

Andrew Branch (@andrewbranch)
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 - native
Errors 41 41 ~ ~ ~ p=1.000 n=12
Symbols 115,276 115,276 ~ ~ ~ p=1.000 n=12
Types 79,613 79,613 ~ ~ ~ p=1.000 n=12
Memory Used 113,527k (± 0.07%) 113,538k (± 0.07%) ~ 113,376k 113,791k p=0.887 n=12
Memory Allocs 2,212,615 (± 0.01%) 2,212,232 (± 0.01%) -383 (- 0.02%) 2,211,899 2,212,916 p=0.001 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.049s (± 3.28%) 0.048s (± 3.43%) ~ 0.045s 0.055s p=0.659 n=12
Bind Time 0.017s (±10.21%) 0.017s (± 8.41%) ~ 0.013s 0.020s p=0.639 n=12
Check Time 0.561s (± 0.56%) 0.558s (± 0.71%) ~ 0.550s 0.568s p=0.172 n=12
Emit Time 0.328s (± 2.74%) 0.324s (± 1.98%) ~ 0.303s 0.338s p=0.680 n=12
Total Time 0.963s (± 1.03%) 0.955s (± 0.95%) ~ 0.931s 0.977s p=0.486 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 846,989 (± 0.06%) 846,907 (± 0.08%) ~ 845,756 848,830 p=0.630 n=12
Types 247,031 (± 0.00%) 247,032 (± 0.00%) ~ 247,030 247,044 p=0.536 n=12
Memory Used 596,350k (± 0.02%) 596,208k (± 0.03%) ~ 595,800k 596,572k p=0.178 n=12
Memory Allocs 13,138,240 (± 0.01%) 13,074,668 (± 0.05%) -63,571 (- 0.48%) 13,065,745 13,095,793 p=0.000 n=12
Config Time 0.020s (± 1.21%) 0.015s (± 1.20%) 🟩-0.005s (-25.21%) 0.015s 0.016s p=0.000 n=12
Parse Time 0.279s (± 1.87%) 0.287s (± 2.65%) ~ 0.274s 0.314s p=0.109 n=12
Bind Time 0.102s (±15.67%) 0.077s (± 4.75%) 🟩-0.024s (-23.96%) 0.068s 0.089s p=0.008 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.878s (± 1.59%) 1.874s (± 1.69%) ~ 1.803s 1.950s p=0.855 n=12
Total Time 2.298s (± 1.18%) 2.269s (± 1.40%) ~ 2.202s 2.352s p=0.291 n=12
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,757,463 1,757,463 ~ ~ ~ p=1.000 n=12
Types 943,966 943,966 ~ ~ ~ p=1.000 n=12
Memory Used 703,690k (± 0.01%) 703,618k (± 0.01%) ~ 703,517k 703,856k p=0.091 n=12
Memory Allocs 13,293,129 (± 0.02%) 13,275,828 (± 0.01%) -17,301 (- 0.13%) 13,273,723 13,278,395 p=0.000 n=12
Config Time 0.003s 0.002s (±12.64%) 🟩-0.001s (-25.00%) 0.002s 0.003s p=0.000 n=12
Parse Time 0.091s (± 3.94%) 0.086s (± 3.19%) 🟩-0.005s (- 5.65%) 0.080s 0.095s p=0.023 n=12
Bind Time 0.027s (±13.06%) 0.027s (±10.60%) ~ 0.024s 0.036s p=1.000 n=12
Check Time 2.450s (± 0.30%) 2.439s (± 0.39%) ~ 2.411s 2.463s p=0.071 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.623s (± 0.41%) 2.607s (± 0.36%) -0.016s (- 0.63%) 2.577s 2.630s p=0.045 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,331,983 4,331,983 ~ ~ ~ p=1.000 n=12
Types 1,370,520 1,370,520 ~ ~ ~ p=1.000 n=12
Memory Used 2,625,122k (± 0.05%) 2,624,401k (± 0.07%) ~ 2,620,409k 2,628,701k p=0.551 n=12
Memory Allocs 27,702,105 (± 0.06%) 27,433,011 (± 0.05%) -269,094 (- 0.97%) 27,401,450 27,465,329 p=0.000 n=12
Config Time 0.020s (± 1.52%) 0.015s (± 1.61%) 🟩-0.005s (-25.41%) 0.015s 0.016s p=0.000 n=12
Parse Time 0.590s (± 3.07%) 0.550s (± 3.42%) 🟩-0.040s (- 6.82%) 0.511s 0.597s p=0.005 n=12
Bind Time 0.002s (±13.40%) 0.003s (±12.54%) ~ 0.002s 0.003s p=0.684 n=12
Check Time 8.637s (± 0.13%) 8.526s (± 0.56%) -0.110s (- 1.28%) 8.384s 8.717s p=0.000 n=12
Emit Time 0.725s (±10.10%) 0.661s (±13.47%) ~ 0.499s 0.800s p=1.000 n=12
Total Time 10.886s (± 0.74%) 10.652s (± 0.98%) -0.235s (- 2.15%) 10.432s 10.825s p=0.000 n=12
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=12
Symbols 7,459,653 7,459,653 ~ ~ ~ p=1.000 n=12
Types 2,647,172 2,647,172 ~ ~ ~ p=1.000 n=12
Memory Used 3,803,448k (± 0.03%) 3,801,312k (± 0.03%) -2,136k (- 0.06%) 3,799,112k 3,804,847k p=0.006 n=12
Memory Allocs 77,165,486 (± 0.08%) 76,682,925 (± 0.06%) -482,561 (- 0.63%) 76,569,505 76,806,352 p=0.000 n=12
Config Time 0.060s (± 0.51%) 0.041s (± 0.69%) 🟩-0.019s (-31.63%) 0.041s 0.042s p=0.000 n=12
Parse Time 1.033s (± 3.80%) 0.994s (± 2.01%) ~ 0.931s 1.034s p=0.091 n=12
Bind Time 0.308s (±12.10%) 0.286s (±11.98%) ~ 0.255s 0.418s p=0.171 n=12
Check Time 14.777s (± 0.51%) 14.582s (± 0.19%) -0.196s (- 1.32%) 14.509s 14.635s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 16.251s (± 0.45%) 15.970s (± 0.17%) -0.281s (- 1.73%) 15.883s 16.024s p=0.000 n=12
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 2,568,629 2,568,629 ~ ~ ~ p=1.000 n=12
Types 1,163,035 1,163,035 ~ ~ ~ p=1.000 n=12
Memory Used 1,212,943k (± 0.01%) 1,212,506k (± 0.01%) -437k (- 0.04%) 1,211,908k 1,212,922k p=0.000 n=12
Memory Allocs 13,987,652 (± 0.17%) 13,885,118 (± 0.42%) -102,534 (- 0.73%) 13,819,844 14,156,480 p=0.000 n=12
Config Time 0.017s (± 1.65%) 0.013s (± 2.45%) 🟩-0.005s (-26.57%) 0.012s 0.013s p=0.000 n=12
Parse Time 0.357s (± 1.24%) 0.341s (± 2.23%) 🟩-0.015s (- 4.28%) 0.328s 0.371s p=0.001 n=12
Bind Time 0.079s (±10.12%) 0.086s (±15.80%) ~ 0.068s 0.129s p=0.382 n=12
Check Time 3.647s (± 0.26%) 3.615s (± 0.33%) -0.033s (- 0.90%) 3.578s 3.639s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 4.122s (± 0.40%) 4.078s (± 0.46%) -0.044s (- 1.07%) 4.030s 4.127s p=0.001 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,388,680 1,388,680 ~ ~ ~ p=1.000 n=12
Types 441,862 441,862 ~ ~ ~ p=1.000 n=12
Memory Used 1,312,483k (± 0.57%) 1,315,779k (± 0.35%) ~ 1,305,802k 1,331,129k p=0.319 n=12
Memory Allocs 78,202,041 (± 0.13%) 77,890,688 (± 0.11%) -311,353 (- 0.40%) 77,574,236 78,104,482 p=0.000 n=12
Config Time 0.005s (± 8.27%) 0.005s (±13.27%) ~ 0.004s 0.007s p=0.152 n=12
Parse Time 0.308s (± 1.73%) 0.303s (± 2.34%) ~ 0.287s 0.321s p=0.311 n=12
Bind Time 0.000s (±217.90%) 0.000s ~ ~ ~ p=1.000 n=12
Check Time 2.012s (± 0.62%) 2.000s (± 0.41%) ~ 1.981s 2.020s p=0.091 n=12
Emit Time 0.348s (± 4.09%) 0.341s (± 4.09%) ~ 0.314s 0.387s p=0.418 n=12
Total Time 23.880s (± 0.50%) 23.596s (± 0.69%) -0.284s (- 1.19%) 23.230s 23.973s p=0.010 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 334,953 ~ ~ ~ p=1.000 n=12
Types 197,616 197,616 ~ ~ ~ p=1.000 n=12
Memory Used 247,490k (± 0.03%) 247,433k (± 0.02%) ~ 247,298k 247,526k p=0.068 n=12
Memory Allocs 4,329,511 (± 0.01%) 4,325,973 (± 0.01%) -3,538 (- 0.08%) 4,324,662 4,326,755 p=0.000 n=12
Config Time 0.001s (±37.93%) 0.000s (±77.74%) ~ 0.000s 0.001s p=0.214 n=12
Parse Time 0.090s (± 4.63%) 0.095s (± 4.22%) ~ 0.084s 0.107s p=0.057 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.798s (± 0.76%) 0.793s (± 0.70%) ~ 0.784s 0.815s p=0.202 n=12
Emit Time 0.124s (± 4.53%) 0.128s (± 3.42%) ~ 0.116s 0.139s p=0.323 n=12
Total Time 1.056s (± 0.51%) 1.063s (± 0.64%) ~ 1.039s 1.080s p=0.070 n=12
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 11,588,087 11,588,087 ~ ~ ~ p=1.000 n=12
Types 3,062,556 3,062,556 ~ ~ ~ p=1.000 n=12
Memory Used 3,946,543k (± 0.01%) 3,944,580k (± 0.01%) -1,964k (- 0.05%) 3,943,226k 3,946,342k p=0.000 n=12
Memory Allocs 41,547,231 (± 0.06%) 41,381,098 (± 0.04%) -166,133 (- 0.40%) 41,345,948 41,423,159 p=0.000 n=12
Config Time 0.006s 0.005s (± 3.57%) 🟩-0.001s (-15.28%) 0.005s 0.006s p=0.000 n=12
Parse Time 0.570s (± 2.52%) 0.549s (± 1.99%) ~ 0.529s 0.597s p=0.071 n=12
Bind Time 0.181s (±16.62%) 0.196s (±10.08%) ~ 0.153s 0.244s p=0.074 n=12
Check Time 18.663s (± 0.39%) 18.592s (± 0.46%) -0.071s (- 0.38%) 18.447s 18.923s p=0.045 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 19.435s (± 0.38%) 19.364s (± 0.43%) ~ 19.241s 19.713s p=0.066 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 303,834 ~ ~ ~ p=1.000 n=12
Types 181,663 181,663 ~ ~ ~ p=1.000 n=12
Memory Used 215,235k (± 0.02%) 215,252k (± 0.01%) ~ 215,171k 215,313k p=0.504 n=12
Memory Allocs 1,401,665 (± 0.02%) 1,401,192 (± 0.02%) -472 (- 0.03%) 1,400,416 1,401,892 p=0.014 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.079s (± 3.93%) 0.079s (± 5.04%) ~ 0.069s 0.088s p=0.921 n=12
Bind Time 0.033s (±10.26%) 0.033s (± 8.87%) ~ 0.024s 0.040s p=0.921 n=12
Check Time 0.618s (± 1.19%) 0.613s (± 0.99%) ~ 0.603s 0.631s p=0.433 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.743s (± 0.93%) 0.738s (± 0.83%) ~ 0.719s 0.751s p=0.504 n=12
vscode - native
Errors 396 396 ~ ~ ~ p=1.000 n=12
Symbols 12,489,159 12,489,159 ~ ~ ~ p=1.000 n=12
Types 4,083,411 4,083,411 ~ ~ ~ p=1.000 n=12
Memory Used 5,851,727k (± 0.03%) 5,849,628k (± 0.01%) -2,099k (- 0.04%) 5,846,813k 5,851,034k p=0.020 n=12
Memory Allocs 59,515,692 (± 0.04%) 58,399,500 (± 0.01%) -1,116,191 (- 1.88%) 58,386,594 58,418,313 p=0.000 n=12
Config Time 0.062s (± 0.50%) 0.040s (± 1.81%) 🟩-0.022s (-35.03%) 0.040s 0.044s p=0.000 n=12
Parse Time 1.448s (± 2.72%) 1.456s (± 2.21%) ~ 1.384s 1.528s p=0.630 n=12
Bind Time 0.631s (±11.98%) 0.479s (± 9.59%) 🟩-0.152s (-24.04%) 0.409s 0.625s p=0.003 n=12
Check Time 13.637s (± 1.13%) 13.652s (± 1.10%) ~ 13.352s 13.947s p=0.590 n=12
Emit Time 4.662s (± 5.30%) 4.824s (± 6.76%) ~ 4.207s 5.533s p=0.551 n=12
Total Time 20.522s (± 0.81%) 20.526s (± 0.97%) ~ 20.167s 21.028s p=0.755 n=12
webpack - native
Errors 598 598 ~ ~ ~ p=1.000 n=12
Symbols 1,343,495 1,343,495 ~ ~ ~ p=1.000 n=12
Types 651,492 651,492 ~ ~ ~ p=1.000 n=12
Memory Used 855,379k (± 0.01%) 855,138k (± 0.02%) -241k (- 0.03%) 854,686k 855,431k p=0.006 n=12
Memory Allocs 6,768,818 (± 0.01%) 6,730,140 (± 0.16%) -38,678 (- 0.57%) 6,720,048 6,772,058 p=0.000 n=12
Config Time 0.009s 0.008s 🟩-0.001s (-11.11%) ~ ~ p=0.000 n=12
Parse Time 0.319s (± 2.46%) 0.298s (± 3.43%) 🟩-0.021s (- 6.54%) 0.267s 0.329s p=0.004 n=12
Bind Time 0.075s (± 8.20%) 0.094s (±17.94%) ~ 0.069s 0.141s p=0.065 n=12
Check Time 2.773s (± 0.48%) 2.714s (± 0.79%) -0.059s (- 2.14%) 2.670s 2.767s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 3.212s (± 0.43%) 3.150s (± 0.47%) -0.063s (- 1.95%) 3.110s 3.191s p=0.000 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,060,810 1,060,810 ~ ~ ~ p=1.000 n=12
Types 389,671 389,671 ~ ~ ~ p=1.000 n=12
Memory Used 471,862k (± 0.02%) 471,798k (± 0.04%) ~ 471,451k 472,393k p=0.266 n=12
Memory Allocs 4,223,145 (± 0.08%) 4,188,389 (± 0.11%) -34,756 (- 0.82%) 4,174,846 4,204,036 p=0.000 n=12
Config Time 0.003s 0.002s 🟩-0.001s (-33.33%) ~ ~ p=0.000 n=12
Parse Time 0.134s (± 3.69%) 0.135s (± 3.15%) ~ 0.125s 0.149s p=0.504 n=12
Bind Time 0.051s (±13.15%) 0.048s (±14.59%) ~ 0.035s 0.069s p=0.522 n=12
Check Time 1.089s (± 0.76%) 1.087s (± 1.01%) ~ 1.065s 1.123s p=0.258 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.285s (± 0.69%) 1.279s (± 0.89%) ~ 1.248s 1.305s p=0.451 n=12
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • arktype - native
  • mui-docs - native
  • sentry - native
  • social-app - native
  • strada-build-src - native
  • strada-compiler - native
  • t3code-server - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

lsp

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-UnionsLSP - native
Req 1 - updateOpen 10ms (±13.94%) 12ms (±15.38%) ~ 9ms 17ms p=0.218 n=12
Req 2 - geterr 540ms (± 0.33%) 535ms (± 0.36%) -6ms (- 1.09%) 529ms 539ms p=0.000 n=12
Req 3 - references 45ms (± 4.26%) 47ms (± 5.29%) ~ 39ms 50ms p=0.202 n=12
Req 4 - navto 16ms (± 1.90%) 17ms (± 1.99%) ~ 16ms 17ms p=0.680 n=12
Req 5 - completionInfo count 1,363 1,363 ~ ~ ~ p=1.000 n=12
Req 5 - completionInfo 15ms (± 5.26%) 16ms (± 6.17%) ~ 14ms 19ms p=0.522 n=12
CompilerLSP - native
Req 1 - updateOpen 12ms (±16.30%) 10ms (± 1.80%) ~ 10ms 11ms p=0.223 n=12
Req 2 - geterr 283ms (± 0.32%) 284ms (± 0.66%) ~ 280ms 288ms p=0.280 n=12
Req 3 - references 48ms (± 2.25%) 48ms (± 1.35%) ~ 45ms 49ms p=0.417 n=12
Req 4 - navto 17ms (± 1.43%) 18ms (± 6.75%) ~ 17ms 22ms p=0.112 n=12
Req 5 - completionInfo count 1,525 1,525 ~ ~ ~ p=1.000 n=12
Req 5 - completionInfo 22ms (± 5.76%) 20ms (±11.11%) ~ 15ms 23ms p=0.106 n=12
System info unknown
Hosts
  • native
Scenarios
  • CompilerLSP - native
  • Compiler-UnionsLSP - native
  • xstate-main-1-LSP - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
lsp-startup - native
Execution time 4.64ms (±365.09%) 4.66ms (±365.08%) +0.02ms (+ 0.38%) 0.00ms 468.21ms p=0.000 n=1200
tsgo-startup - native
Execution time 5.69ms (±365.09%) 5.72ms (±365.10%) +0.03ms (+ 0.50%) 0.00ms 580.57ms p=0.020 n=1200
System info unknown
Hosts
  • native
Scenarios
  • lsp-startup - native
  • tsgo-startup - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

Developer Information:

Download Benchmarks

This branch has not been deployed

No deployments
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