Multi-engine (js / rust / wasm / java / dotnet) benchmark
5 reports · 31 workloads · median of 5 repetitions after 1 warmup · scale 1
darwin/arm64 · node v24.7.0 · rev 7f8854929523
js total baseline
3345.9 ms
31 workloads · plen
rust vs js
1.64x
2040.6 vs 3345.9 ms on 31 shared workloads
wasm vs js
1.39x
2407.5 vs 3345.9 ms on 31 shared workloads
java vs js
0.98x
3425.1 vs 3345.9 ms on 31 shared workloads
dotnet vs js
1.02x
3281.2 vs 3345.9 ms on 31 shared workloads
Reports
In run order. A total covers only the workloads that report measured; the speedup is computed on the subset it shares with js.
| report | engine | workloads | total ms | vs js | shared | file |
|---|---|---|---|---|---|---|
| js | plen | 31 | 3345.909 | 1.00x | 31 | baseline-js.json |
| rust | plen | 31 | 2040.575 | 1.64x | 31 | baseline.json |
| wasm | plen | 31 | 2407.471 | 1.39x | 31 | baseline-wasm.json |
| java | plen | 31 | 3425.118 | 0.98x | 31 | baseline-java.json |
| dotnet | plen | 31 | 3281.175 | 1.02x | 31 | baseline-dotnet.json |
Where the time goes
parseimportgraphplanlevelevaluateoutputserialize
js
4.209 ms 1.00x
rust
1.744 ms 2.41x
wasm
2.608 ms 1.61x
java
4.191 ms 1.00x
dotnet
1.968 ms 2.14x
js
2.908 ms 1.00x
rust
1.523 ms 1.91x
wasm
2.561 ms 1.14x
java
3.460 ms 0.84x
dotnet
1.946 ms 1.49x
js
2.735 ms 1.00x
rust
1.395 ms 1.96x
wasm
2.377 ms 1.15x
java
2.699 ms 1.01x
dotnet
1.816 ms 1.51x
js
12.646 ms 1.00x
rust
6.541 ms 1.93x
wasm
12.278 ms 1.03x
java
10.540 ms 1.20x
dotnet
8.942 ms 1.41x
js
11.629 ms 1.00x
rust
6.493 ms 1.79x
wasm
10.652 ms 1.09x
java
8.616 ms 1.35x
dotnet
8.875 ms 1.31x
js
23.493 ms 1.00x
rust
13.609 ms 1.73x
wasm
22.266 ms 1.06x
java
15.375 ms 1.53x
dotnet
17.638 ms 1.33x
js
2.433 ms 1.00x
rust
1.290 ms 1.89x
wasm
2.294 ms 1.06x
java
1.846 ms 1.32x
dotnet
1.844 ms 1.32x
js
2.476 ms 1.00x
rust
1.464 ms 1.69x
wasm
2.317 ms 1.07x
java
2.249 ms 1.10x
dotnet
2.236 ms 1.11x
js
11.357 ms 1.00x
rust
6.887 ms 1.65x
wasm
11.112 ms 1.02x
java
7.511 ms 1.51x
dotnet
8.764 ms 1.30x
js
11.825 ms 1.00x
rust
7.941 ms 1.49x
wasm
11.847 ms 1.00x
java
9.065 ms 1.30x
dotnet
9.253 ms 1.28x
js
139.817 ms 1.00x
rust
29.985 ms 4.66x
wasm
35.379 ms 3.95x
java
90.825 ms 1.54x
dotnet
49.383 ms 2.83x
js
157.837 ms 1.00x
rust
36.715 ms 4.30x
wasm
45.226 ms 3.49x
java
71.983 ms 2.19x
dotnet
53.347 ms 2.96x
js
3.746 ms 1.00x
rust
1.779 ms 2.11x
wasm
2.982 ms 1.26x
java
3.711 ms 1.01x
dotnet
2.611 ms 1.43x
js
60.589 ms 1.00x
rust
27.803 ms 2.18x
wasm
29.858 ms 2.03x
java
56.565 ms 1.07x
dotnet
34.139 ms 1.77x
js
118.271 ms 1.00x
rust
14.736 ms 8.03x
wasm
32.542 ms 3.63x
java
69.778 ms 1.69x
dotnet
56.960 ms 2.08x
js
13.456 ms 1.00x
rust
19.814 ms 0.68x
wasm
17.721 ms 0.76x
java
23.496 ms 0.57x
dotnet
43.112 ms 0.31x
js
4.713 ms 1.00x
rust
1.441 ms 3.27x
wasm
1.932 ms 2.44x
java
3.540 ms 1.33x
dotnet
2.820 ms 1.67x
js
76.686 ms 1.00x
rust
20.906 ms 3.67x
wasm
24.911 ms 3.08x
java
74.357 ms 1.03x
dotnet
42.710 ms 1.80x
js
0.054 ms 1.00x
rust
0.009 ms 6.21x
wasm
0.016 ms 3.45x
java
0.017 ms 3.21x
dotnet
0.015 ms 3.70x
js
11.060 ms 1.00x
rust
3.865 ms 2.86x
wasm
6.039 ms 1.83x
java
12.834 ms 0.86x
dotnet
8.175 ms 1.35x
js
92.310 ms 1.00x
rust
38.526 ms 2.40x
wasm
50.662 ms 1.82x
java
108.462 ms 0.85x
dotnet
97.243 ms 0.95x
js
108.428 ms 1.00x
rust
52.654 ms 2.06x
wasm
72.772 ms 1.49x
java
150.289 ms 0.72x
dotnet
132.156 ms 0.82x
js
276.306 ms 1.00x
rust
80.010 ms 3.45x
wasm
103.884 ms 2.66x
java
223.692 ms 1.24x
dotnet
193.020 ms 1.43x
js
12.524 ms 1.00x
rust
7.946 ms 1.58x
wasm
9.019 ms 1.39x
java
16.981 ms 0.74x
dotnet
11.753 ms 1.07x
js
55.867 ms 1.00x
rust
25.760 ms 2.17x
wasm
30.103 ms 1.86x
java
59.476 ms 0.94x
dotnet
52.463 ms 1.06x
js
60.070 ms 1.00x
rust
38.663 ms 1.55x
wasm
43.973 ms 1.37x
java
62.765 ms 0.96x
dotnet
62.779 ms 0.96x
js
308.337 ms 1.00x
rust
150.356 ms 2.05x
wasm
174.178 ms 1.77x
java
327.437 ms 0.94x
dotnet
307.804 ms 1.00x
js
163.887 ms 1.00x
rust
162.434 ms 1.01x
wasm
190.388 ms 0.86x
java
157.197 ms 1.04x
dotnet
186.736 ms 0.88x
js
930.772 ms 1.00x
rust
810.703 ms 1.15x
wasm
936.562 ms 0.99x
java
885.686 ms 1.05x
dotnet
1066.325 ms 0.87x
js
460.224 ms 1.00x
rust
327.702 ms 1.40x
wasm
361.419 ms 1.27x
java
679.285 ms 0.68x
dotnet
569.214 ms 0.81x
js
205.242 ms 1.00x
rust
139.880 ms 1.47x
wasm
157.591 ms 1.30x
java
281.189 ms 0.73x
dotnet
245.128 ms 0.84x
| workload | jsplen | rustplen | wasmplen | javaplen | dotnetplen |
|---|---|---|---|---|---|
| chain/1000 | 1.00x | 2.41x | 1.61x | 1.00x | 2.14x |
| wide/1000 | 1.00x | 1.91x | 1.14x | 0.84x | 1.49x |
| islands/1000 | 1.00x | 1.96x | 1.15x | 1.01x | 1.51x |
| wide/5000 | 1.00x | 1.93x | 1.03x | 1.20x | 1.41x |
| islands/5000 | 1.00x | 1.79x | 1.09x | 1.35x | 1.31x |
| chain/10000 | 1.00x | 1.73x | 1.06x | 1.53x | 1.33x |
| backward-flat/1000 | 1.00x | 1.89x | 1.06x | 1.32x | 1.32x |
| backward-calendar/1000 | 1.00x | 1.69x | 1.07x | 1.10x | 1.11x |
| backward-flat/5000 | 1.00x | 1.65x | 1.02x | 1.51x | 1.30x |
| backward-calendar/5000 | 1.00x | 1.49x | 1.00x | 1.30x | 1.28x |
| summary-expand/1000 | 1.00x | 4.66x | 3.95x | 1.54x | 2.83x |
| summary-shape/1000 | 1.00x | 4.30x | 3.49x | 2.19x | 2.96x |
| summary-block/1000 | 1.00x | 2.11x | 1.26x | 1.01x | 1.43x |
| hierarchy/1000 | 1.00x | 2.18x | 2.03x | 1.07x | 1.77x |
| calendar-day/1000 | 1.00x | 8.03x | 3.63x | 1.69x | 2.08x |
| calendar-hour/1000 | 1.00x | 0.68x | 0.76x | 0.57x | 0.31x |
| cycle-tail/1000 | 1.00x | 3.27x | 2.44x | 1.33x | 1.67x |
| cycle-tail/5000 | 1.00x | 3.67x | 3.08x | 1.03x | 1.80x |
| summary-external-successor | 1.00x | 6.21x | 3.45x | 3.21x | 3.70x |
| leveling/1000 | 1.00x | 2.86x | 1.83x | 0.86x | 1.35x |
| leveling/10000 | 1.00x | 2.40x | 1.82x | 0.85x | 0.95x |
| leveling-batches/5000 | 1.00x | 2.06x | 1.49x | 0.72x | 0.82x |
| leveling-calendars/5000 | 1.00x | 3.45x | 2.66x | 1.24x | 1.43x |
| evaluate-schedule/1000 | 1.00x | 1.58x | 1.39x | 0.74x | 1.07x |
| evaluate/1000 | 1.00x | 2.17x | 1.86x | 0.94x | 1.06x |
| evaluate-schedule/5000 | 1.00x | 1.55x | 1.37x | 0.96x | 0.96x |
| evaluate/5000 | 1.00x | 2.05x | 1.77x | 0.94x | 1.00x |
| assign/1000 | 1.00x | 1.01x | 0.86x | 1.04x | 0.88x |
| assign/5000 | 1.00x | 1.15x | 0.99x | 1.05x | 0.87x |
| evaluate-chains/375 | 1.00x | 1.40x | 1.27x | 0.68x | 0.81x |
| evaluate-chains/375+skip | 1.00x | 1.47x | 1.30x | 0.73x | 0.84x |
slower ← 1.00x → faster
Multi-threaded
Rows on native worker threads; JS and WASM have none. Not part of any total, tile or the heatmap above.
js
—
rust
31.979 ms 1.00x
wasm
—
java
61.567 ms 0.52x
dotnet
149.469 ms 0.21x
Operations
Edit latency in milliseconds on a small dependency island inside a large project. vs base compares a row's summed metrics against the first report that measured the operation, over the metrics both recorded.
| report | apply_plan | scoped_plan | preview | stateless | vs base |
|---|---|---|---|---|---|
| js | 0.3774 | 0.2987 | 0.5796 | — | 1.0x |
| rust | 0.0709 | 0.0499 | 0.1307 | — | 5.0x |
| wasm | 0.1138 | — | 0.1790 | 0.6944 | 3.3x |
| java | 0.2896 | 0.3279 | 0.3749 | — | 1.3x |
| dotnet | 0.1237 | 0.0920 | 0.2135 | — | 2.9x |
| report | apply_plan | scoped_plan | preview | stateless | vs base |
|---|---|---|---|---|---|
| js | 2.7245 | 2.7550 | 4.2915 | — | 1.0x |
| rust | 0.6951 | 0.4992 | 1.2982 | — | 3.9x |
| wasm | 1.0622 | — | 1.7006 | 6.9568 | 2.5x |
| java | 2.4342 | 2.1377 | 2.9897 | — | 1.3x |
| dotnet | 1.3788 | 1.1145 | 2.6083 | — | 1.9x |