From 2811d798e672a92272c4152e4177688b1c10a506 Mon Sep 17 00:00:00 2001 From: Marko Lahma Date: Fri, 10 Jul 2026 14:49:44 +0300 Subject: [PATCH] Refresh engine comparison benchmark results Full re-run after the 2026-07-10 batch (#2613, #2615-#2620). Highlights vs the 2026-07-09 refresh: dromaeo-string-base64 allocation -30% (2.30 -> 1.62 MB/op) and -modern -4.3% time, the classic row now ranked first outright (previously tied with NiL.JS) - loop tests of the form i < s.length read the length unboxed through the comparison lane (#2617). The batch's engine-reuse wins (#2613/#2615 definition reuse, #2616 slot-cache lane restoration) target long-lived-engine embeddings and are not visible in this fresh-engine-per-op table. Everything else moved within documented noise bands; competitor rows served as thermal canaries (times within +/-3%, allocations byte-identical). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01BY8HoKam5H8vTPn1bMY2Hv --- Jint.Benchmark/README.md | 276 +++++++++++++++++++-------------------- 1 file changed, 135 insertions(+), 141 deletions(-) diff --git a/Jint.Benchmark/README.md b/Jint.Benchmark/README.md index 56f9397fc..24d15219b 100644 --- a/Jint.Benchmark/README.md +++ b/Jint.Benchmark/README.md @@ -10,13 +10,13 @@ Using Jint's recommended production path (a cached prepared script) and comparin **closest competitor** on each script: * **Fastest engine on almost every workload.** It leads the object, string, base64 and regex scripts - by **1.04×–4.9×** over the next-fastest engine, starts tiny scripts up **3×–6×** faster - (`minimal` executes in **under a microsecond**), and now also leads `dromaeo-core-eval` — the - last row another interpreter used to win. -* **Fastest interpreter on heavy floating-point math.** `dromaeo-3d-cube` moved ahead of NiL.JS in - this refresh; only the IL-compiling engine remains structurally faster on tight numeric loops. + by **1.04×–4.6×** over the next-fastest engine, starts tiny scripts up **3×–6×** faster + (`minimal` executes in **under a microsecond**), and leads `dromaeo-core-eval` — the last row + another interpreter used to win. +* **Fastest interpreter on heavy floating-point math.** `dromaeo-3d-cube` runs ahead of every other + interpreter; only the IL-compiling engine remains structurally faster on tight numeric loops. * **By far the lowest memory use.** Typically **2×–63×** less allocation than the closest competitor - — and up to **330×** less than the highest in the field — which means much lighter GC pressure in + — and up to **470×** less than the highest in the field — which means much lighter GC pressure in real applications. ## Running the benchmarks @@ -56,19 +56,19 @@ Notes: Numbers use Jint's recommended production path (`Jint_ParsedScript`, a cached prepared script) and compare against the closest competitor on each script. -* **Tiny-script latency.** `minimal` runs in **0.91 µs** and `evaluation` / `evaluation-modern` in - ~4.2–4.4 µs — **3× and 6× faster than the closest competitor**. +* **Tiny-script latency.** `minimal` runs in **0.92 µs** and `evaluation` / `evaluation-modern` in + ~4.2–4.5 µs — **3× and 6× faster than the closest competitor**. * **Cached scripts avoid re-parsing.** `linq-js` drops from 1,188 µs (re-parsed every run) to **57 µs** when the prepared script is reused — ~20× — which is also **5.7× faster than the next-fastest engine**. Cache your `Prepared