Repository navigation
Benchmark project builds and output sizes in CI - #9272
Conversation
The benchmarks only replayed single bsc calls, so the build system's own work never showed. They now also build the base's tests/tests on one worker domain (clean, no-op, leaf edit, shared edit), adding the workers' allocations the build reports, and measure the .cmi/.cmti/.cmt/.cmj sizes and the playground bundle. Only the no-op and leaf-edit builds run under cachegrind: the larger ones take minutes, and with two domains collecting their instructions depend on how the domains interleave. Review: Why build the base's tests/tests on both sides? The base compiler builds them already, so a pull request adding tests with new syntax can't break the base measurement. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kbf3gGPsF3fHZn9rBxA7Hm Signed-off-by: Christoph Knittel <ck@cca.io>
ChangelogNo changelog entry. Semantic Diff1 commit · Full page Benchmark project builds and output sizes in CI1673f76 · cknitt + Claude · Nov 09, 2026, 06:46 UTC The benchmarks only replayed single bsc calls, so the build system's own work never showed. They now also build the base's tests/tests on one worker domain (clean, no-op, leaf edit, shared edit), adding the workers' allocations the build reports, and measure the .cmi/.cmti/.cmt/.cmj sizes and the playground bundle. Only the no-op and leaf-edit builds run under cachegrind: the larger ones take minutes, and with two domains collecting their instructions depend on how the domains interleave. Review
|
✅ Compiler benchmarksAllocated wordsIn total: 806,109,534 → 806,109,309 (±0.00%). None of the 261 benchmarks changed by 0.1% or more. InstructionsIn total: 11,321,687,111 → 11,321,641,809 (±0.00%). None of the 35 benchmarks changed by 0.1% or more. Output sizeIn total: 29,806,856 → 29,806,856 (±0.00%). None of the 13 benchmarks changed by 0.1% or more. Pull request 1673f76 compared with base a5e4a65 in this run. |
rescript
@rescript/belt
@rescript/darwin-arm64
@rescript/linux-arm64
@rescript/linux-x64
@rescript/runtime
@rescript/win32-x64
commit: |
The benchmarks job replays single
bsccalls only, so the build system's own work (scanning, dependency graph, freshness checks, in-process.cmiloading, scheduling) never showed up. This adds:tests/tests(~680 modules) built withrescript buildon one worker domain (REWATCH_COMPILER_DOMAINS=1): clean, no-op, after editing a leaf test, and after editingtest_utils.res(~200 dependents). Allocated words for all four, including the workers' allocations that the build reports withREWATCH_REPORT_WORKER_ALLOCATIONS(Report the build's worker allocations when asked #9271, below this PR). Instructions under cachegrind for the no-op and leaf-edit builds only: the bigger builds would take minutes, the replayed builds cover their compiler work, and with two domains collecting their instruction counts depend on interleaving (the shared edit differed by 9.5% between base and head of an earlier run). Both sides build the base'stests/testsfrom a fixed directory, with-warn-errordropped, so new tests or warnings in a PR can't break either build..cmi/.cmti/.cmt/.cmjbytes for runtime, Belt andtests/tests, plus the playground'scompiler.js. A new "Output size" section, alerting like the others at 1%.Local runs (linux-arm64): clean build 1.4 s, the other three 0.1–0.6 s; repeated runs agree within 0.0004% (allocations), sizes are identical.
Job time: 266 s in an earlier run of this change (was 234 s on master; runner speed varies by more than that). The two playground builds are 75 s of it; the critical path (Windows build) stays ~550 s.
Replaces #9270, split so that this PR's base already reports the workers' allocations.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Kbf3gGPsF3fHZn9rBxA7Hm