Skip to content

Refresh engine comparison results; add wall-clock profiling driver#2505

Merged
lahma merged 3 commits into
sebastienros:mainfrom
lahma:benchmark-refresh-2026-06
Jun 8, 2026
Merged

Refresh engine comparison results; add wall-clock profiling driver#2505
lahma merged 3 commits into
sebastienros:mainfrom
lahma:benchmark-refresh-2026-06

Conversation

@lahma

@lahma lahma commented Jun 7, 2026

Copy link
Copy Markdown
Collaborator

Benchmark housekeeping from the 2026-06 engine-comparison campaign.

  • README.md: refreshed EngineComparison results (2026-06-07, .NET 10.0.8, Ryzen 9 5950X) with all competitor engines at their latest versions: Jurassic 3.2.9, NiL.JS 2.6.1722, YantraJS.Core 1.2.404. Notes the severe YantraJS 1.2.404 regression on dromaeo-object-regexp (~35 s/op and ~32 GB allocated per op vs ~1 s/op on 1.2.344). Jint leads or ties time on 8 of 19 workloads and has the lowest allocations in nearly all.
  • CpuProfileDriver (--profile-cpu <script> <iters> <source|prepared>): wall-clock A/B driver mirroring EngineComparisonBenchmark''s per-op shape (fresh strict engine per iteration, dromaeo helper stubs), complementing the existing --profile-memory probe. Useful for quick prepared-vs-source comparisons without a full BDN run.
  • DateConstructionBenchmarks: records a falsified optimization hypothesis — skipping the redundant TimeClip/double round-trip in the new Date() now-path showed no measurable win (15.15 ± 0.38 → 15.19 ± 0.21 ms per 100k constructions); per-construction cost is dominated by dispatch, allocation and the UtcNow syscall. Kept as a guard for future Date work.

Note: the Jint rows in the README table predate #2502/#2503/#2504.

🤖 Generated with Claude Code

lahma and others added 3 commits June 8, 2026 16:48
README.md: 2026-06-07 results on .NET 10.0.8 (Jurassic 3.2.9,
NiL.JS 2.6.1722, YantraJS.Core 1.2.404 - all latest). Notes the severe
YantraJS 1.2.404 regression on dromaeo-object-regexp (~35 s/op, ~32 GB
allocated; 1.2.344 ran it at ~1 s/op).

CpuProfileDriver adds a `--profile-cpu <script> <iters> <source|prepared>`
mode mirroring EngineComparisonBenchmark per-op shape (fresh strict engine
per iteration, dromaeo helper stubs) for quick wall-clock A/B comparisons,
complementing the existing --profile-memory probe.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Records a falsified optimization hypothesis: skipping the redundant
TimeClip + double round-trip in the `new Date()` now-path showed no
measurable win (15.15ms +/- 0.38 -> 15.19ms +/- 0.21 per 100k
constructions) because per-construction cost is dominated by dispatch,
allocation and the UtcNow syscall. Kept as a guard for future Date work.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fresh full EngineComparison run on main with all five engine-comparison
perf PRs merged (sebastienros#2502 empty-FDI, sebastienros#2503 eval cache, sebastienros#2504 prepared-script
fix, sebastienros#2506 string slice views, sebastienros#2507 global-binding cache). Jint now:
- dromaeo-object-string ~58-61 ms / 139 MB (rank 1, was ~170 ms / 1.3 GB
  and losing to NiL.JS) and the -modern variant likewise rank 1
- array-stress rank 1 (3,290 us, ParsedScript)
- stopwatch 174-181 ms (was ~205 ms)
- still the lowest allocations in nearly every workload

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@lahma
lahma force-pushed the benchmark-refresh-2026-06 branch from 2a0c9dd to 1341057 Compare June 8, 2026 14:49
@lahma
lahma merged commit a01bf3f into sebastienros:main Jun 8, 2026
4 checks passed
@lahma
lahma deleted the benchmark-refresh-2026-06 branch June 8, 2026 15:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant