summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsko Nõmm <asko@nmm.ee>2026-04-10 15:55:56 +0300
committerAsko Nõmm <asko@nmm.ee>2026-04-10 15:55:56 +0300
commiteb6f23ab6138cc132154145720c503d2509ede1f (patch)
tree4751b3c6c128073af662b8e7de1210d58744c775
parentc98df5a044bbca27a3f5d4a7ad124c4656ce8693 (diff)
Update Jank benchmark baseline and timer interop
Refresh Jank benchmark numbers with the latest run and fix the Jank clock helper interop in the benchmark harness so future benchmark runs complete successfully.
-rw-r--r--BENCHMARKS.md32
-rw-r--r--bench/ruuter/bench.cljc4
2 files changed, 18 insertions, 18 deletions
diff --git a/BENCHMARKS.md b/BENCHMARKS.md
index c6e7053..799186c 100644
--- a/BENCHMARKS.md
+++ b/BENCHMARKS.md
@@ -193,20 +193,20 @@ Each benchmark: 2s warmup, 5s measurement window.
| Scenario | Ops/sec | ns/op |
|---|---:|---:|
-| Small (5) — literal first | 91,466 | 10,932 |
-| Small (5) — literal middle | 63,483 | 15,752 |
-| Small (5) — param match | 29,092 | 34,373 |
-| Small (5) — nested params | 24,136 | 41,430 |
-| Small (5) — wildcard | 23,772 | 42,065 |
-| Small (5) — miss (404) | 94,463 | 10,586 |
-| Medium (52) — match first | 95,493 | 10,471 |
-| Medium (52) — match middle | 27,171 | 36,803 |
-| Medium (52) — match last | 26,904 | 37,168 |
-| Medium (52) — catch-all wildcard | 32,048 | 31,203 |
-| Large (202) — match first | 94,151 | 10,621 |
-| Large (202) — match middle | 26,602 | 37,590 |
-| Large (202) — match last | 26,916 | 37,152 |
-| Large (202) — miss (404) | 68,021 | 14,701 |
+| Small (5) — literal first | 962,079 | 1,039 |
+| Small (5) — literal middle | 442,877 | 2,257 |
+| Small (5) — param match | 223,006 | 4,484 |
+| Small (5) — nested params | 146,768 | 6,813 |
+| Small (5) — wildcard | 182,129 | 5,490 |
+| Small (5) — miss (404) | 655,948 | 1,524 |
+| Medium (52) — match first | 899,823 | 1,111 |
+| Medium (52) — match middle | 181,990 | 5,494 |
+| Medium (52) — match last | 181,771 | 5,501 |
+| Medium (52) — catch-all wildcard | 272,411 | 3,670 |
+| Large (202) — match first | 875,741 | 1,141 |
+| Large (202) — match middle | 178,075 | 5,615 |
+| Large (202) — match last | 176,088 | 5,678 |
+| Large (202) — miss (404) | 482,470 | 2,072 |
## Analysis
@@ -229,8 +229,8 @@ Each benchmark: 2s warmup, 5s measurement window.
- Peak throughput: ~1.1M ops/sec (miss/404 — fast trie rejection)
### Jank
-- Peak throughput: ~95K ops/sec (literal match / miss)
-- Performance is roughly 8–10x slower than Babashka, expected for an alpha interpreted runtime
+- Peak throughput: ~962K ops/sec (literal match)
+- Performance is now close to Babashka peak throughput on this benchmark suite
### Key insight
diff --git a/bench/ruuter/bench.cljc b/bench/ruuter/bench.cljc
index 71a02eb..de6be46 100644
--- a/bench/ruuter/bench.cljc
+++ b/bench/ruuter/bench.cljc
@@ -7,7 +7,7 @@
#?(:jank
(cpp/raw "#include <chrono>
-int64_t now_ns()
+int64_t ruuter_bench_clock_now_ns_cpp()
{
return std::chrono::duration_cast<std::chrono::nanoseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch()
@@ -19,7 +19,7 @@ int64_t now_ns()
"Returns the current time in nanoseconds."
[]
#?(:cljs (* (.now js/performance) 1e6)
- :jank (cpp/now_ns)
+ :jank (cpp/ruuter_bench_clock_now_ns_cpp)
:default (System/nanoTime)))
(defn- ->long