Skip to content

chore(bench): swap cal.com.tsx for excalidraw App.tsx everywhere#22895

Merged
graphite-app[bot] merged 1 commit into
mainfrom
chore/bench-app-tsx-all-benchmarks
Jun 1, 2026
Merged

chore(bench): swap cal.com.tsx for excalidraw App.tsx everywhere#22895
graphite-app[bot] merged 1 commit into
mainfrom
chore/bench-app-tsx-all-benchmarks

Conversation

@Dunqing

@Dunqing Dunqing commented Jun 1, 2026

Copy link
Copy Markdown
Member

Summary

Follow-up to #22590. That PR replaced the synthetic cal.com.tsx fixture — a concatenation of Next.js pages that declares top-level names 70–113× and emits thousands of redeclaration diagnostics, inflating semantic sys_allocs — with excalidraw's real, single-file App.tsx. But it only touched TestFiles::complicated() (used by track_memory_allocations).

This applies the same swap to every remaining benchmark that still used cal.com.tsx, and unifies all excalidraw App.tsx references on one pin (f6d85bc8):

File Change
tasks/common/src/test_file.rs minimal() (feeds every tasks/benchmark criterion bench): cal.com.tsxApp.tsx@f6d85bc8. formatter() re-pinned @v0.18.0@f6d85bc8
napi/parser/bench.bench.js parser benchmark fixture → App.tsx@f6d85bc8
napi/parser/test/parse-raw.test.ts bench-fixture list + size comment → App.tsx@f6d85bc8
tasks/benchmark/benches/semantic.rs rewrote the now-false "cal.com.tsx has many errors" comment
crates/oxc_ast/src/serialize/mod.rs removed the stale cal.com.tsx row from the capacity-ratio doc table

Why a single pin

get_source_text caches downloads by the last URL segment only (App.tsx). With two different pins live, a single cargo bench run would download both into the same target/App.tsx and silently bench whichever landed first. Re-pinning formatter() to f6d85bc8 removes that collision — and the pre-existing latent one between cargo bench (@v0.18.0) and cargo allocs (@f6d85bc8).

Notes

No committed snapshots change: these fixtures feed only timing benches and a programRaw.toEqual(programStandard) self-consistency test; the snapshotted complicated() / minifier() sets are untouched.


This PR was prepared with AI assistance; I reviewed, tested, and verified the changes.

Dunqing commented Jun 1, 2026

Copy link
Copy Markdown
Member Author

How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • 0-merge - adds this PR to the back of the merge queue
  • hotfix - for urgent changes, fast-track this PR to the front of the merge queue

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions github-actions Bot added A-parser Area - Parser A-ast Area - AST labels Jun 1, 2026
@codspeed-hq

codspeed-hq Bot commented Jun 1, 2026

Copy link
Copy Markdown

Merging this PR will degrade performance by 13.99%

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

❌ 1 regressed benchmark
✅ 47 untouched benchmarks
🆕 9 new benchmarks
⏩ 9 skipped benchmarks1

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation formatter[App.tsx] 44.5 ms 51.7 ms -13.99%
🆕 Simulation linter[App.tsx] N/A 169.1 ms N/A
🆕 Simulation minifier[App.tsx] N/A 12.6 ms N/A
🆕 Simulation mangler[App.tsx] N/A 882.4 µs N/A
🆕 Simulation pipeline[App.tsx] N/A 34.2 ms N/A
🆕 Simulation transformer[App.tsx] N/A 7.3 ms N/A
🆕 Simulation codegen[App.tsx] N/A 11.4 ms N/A
🆕 Simulation parser[App.tsx] N/A 8 ms N/A
🆕 Simulation semantic[App.tsx] N/A 5.3 ms N/A
🆕 Simulation lexer[App.tsx] N/A 2.3 ms N/A

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing chore/bench-app-tsx-all-benchmarks (d555ee6) with main (070eb9e)

Open in CodSpeed

Footnotes

  1. 9 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@Dunqing Dunqing marked this pull request as ready for review June 1, 2026 15:44
@Dunqing Dunqing requested a review from camc314 June 1, 2026 15:45
@camc314 camc314 added the 0-merge Merge with Graphite Merge Queue label Jun 1, 2026

camc314 commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Merge activity

)

## Summary

Follow-up to #22590. That PR replaced the synthetic `cal.com.tsx` fixture — a concatenation of Next.js pages that declares top-level names 70–113× and emits thousands of redeclaration diagnostics, inflating semantic `sys_allocs` — with excalidraw's real, single-file `App.tsx`. But it only touched `TestFiles::complicated()` (used by `track_memory_allocations`).

This applies the same swap to every remaining benchmark that still used `cal.com.tsx`, and unifies **all** excalidraw `App.tsx` references on one pin (`f6d85bc8`):

| File | Change |
| --- | --- |
| `tasks/common/src/test_file.rs` | `minimal()` (feeds every `tasks/benchmark` criterion bench): `cal.com.tsx` → `App.tsx@f6d85bc8`. `formatter()` re-pinned `@v0.18.0` → `@f6d85bc8` |
| `napi/parser/bench.bench.js` | parser benchmark fixture → `App.tsx@f6d85bc8` |
| `napi/parser/test/parse-raw.test.ts` | bench-fixture list + size comment → `App.tsx@f6d85bc8` |
| `tasks/benchmark/benches/semantic.rs` | rewrote the now-false "`cal.com.tsx` has many errors" comment |
| `crates/oxc_ast/src/serialize/mod.rs` | removed the stale `cal.com.tsx` row from the capacity-ratio doc table |

## Why a single pin

`get_source_text` caches downloads by the last URL segment only (`App.tsx`). With two different pins live, a single `cargo bench` run would download both into the same `target/App.tsx` and silently bench whichever landed first. Re-pinning `formatter()` to `f6d85bc8` removes that collision — and the pre-existing latent one between `cargo bench` (`@v0.18.0`) and `cargo allocs` (`@f6d85bc8`).

## Notes

No committed snapshots change: these fixtures feed only timing benches and a `programRaw.toEqual(programStandard)` self-consistency test; the snapshotted `complicated()` / `minifier()` sets are untouched.

---

This PR was prepared with AI assistance; I reviewed, tested, and verified the changes.
@graphite-app graphite-app Bot force-pushed the chore/bench-app-tsx-all-benchmarks branch from d555ee6 to 188b9e6 Compare June 1, 2026 16:21
@graphite-app graphite-app Bot merged commit 188b9e6 into main Jun 1, 2026
29 checks passed
@graphite-app graphite-app Bot removed the 0-merge Merge with Graphite Merge Queue label Jun 1, 2026
@graphite-app graphite-app Bot deleted the chore/bench-app-tsx-all-benchmarks branch June 1, 2026 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-ast Area - AST A-parser Area - Parser

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants