chore(benchmarks): refresh stale perf baseline#5081
Conversation
baseline.json (53f0f29, 2026-06-09) recorded 100x-3000x array/numeric regressions that no longer reproduce after intervening codegen work (03_array_write 4143->3ms, 04_array_read 4067->167ms, 16_matrix_multiply 10221->671ms, bench_numeric_array_downgrade 21902->4690ms). Regenerated on the current commit via `./benchmarks/compare.sh --update-baseline --full --runs 5` so the regression gate reflects reality. Genuine remaining Node gaps are now visible rather than masked by stale catastrophic numbers: 09_method_calls (~490x), bench_numeric_array_downgrade (~780x), bench_object_property (~70x), bench_numeric_array_numeric (~50x).
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe pull request refreshes ChangesBenchmark Baseline Refresh
Estimated Code Review Effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
What
Regenerate
benchmarks/baseline.json, which had gone badly stale.The previous baseline (53f0f29, 2026-06-09) recorded 100x–3000x array/numeric
regressions that no longer reproduce after the intervening codegen work — the
regression gate was comparing against fantasy numbers:
How
Regenerated on the current commit via:
(macOS host, Node 24, median of 5). Only
benchmarks/baseline.jsonchanges.A provenance note recording the refresh and the runner-variance caveat is
included in the file's
notesfield.Why it matters
With the stale numbers gone, the genuine remaining gaps vs Node are no longer
masked and the gate is meaningful again. Notable real gaps worth follow-up:
emits ~4 non-inlinable typed-feedback runtime calls per invocation
(
register_site×2 + class-field get/set guards) even though typed feedbackis off by default. The fast paths behind the guards are correct inline slot
load/stores; the scaffolding calls are the cost.
any[]forces dynamic add +boxed set fallback per element.
Summary by CodeRabbit