Benchmarks · An open suite
Benchmarks, in the open.
One reproducible suite for desktop web runtimes. Same machine, same workloads, every run published — Kurogane measured against the alternatives, one runtime at a time.
Runtimes
Kurogane0.0.3
subject
Electron42
measured
Tauri2
in progressWails2
planned
NW.js
planned
Latest run · Kurogane 0.0.3 · Chromium 147 · Windows 11 · Ryzen 7 5700X3D · median of 5 runs
01 — Latency
Round-trip latency
Median latency per test. The lighter extension on each bar runs from the median to the p95 — shorter extensions mean more consistent execution.
Kurogane — engraved
Electron 42 — hatched
tail to p95
Speedup, by weight
electron median ÷ kurogane median
02 — Throughput
Throughput that keeps climbing
Effective round-trip throughput against payload size, on a log scale — workloads span 1 KB to 20 MB. Past ~2 MB Kurogane moves to a shared-memory path; Electron flattens, then falls.
Kurogane
Electron 42
03 — Stability
Run-to-run variance
Five measured runs per test, plotted as deviation from each runtime’s own median so every workload shares one axis. Boxes span Q1–Q3, whiskers min–max. Tighter is steadier.
Kurogane
- Electron 42
04 — Data
Every number, in full
All six tests: median, p95 and derived throughput for both runtimes — plus every measured run, so you can check our math.
| Kurogane 0.0.3 | Electron 42 | ||||||
|---|---|---|---|---|---|---|---|
| Workload | Median | p95 | MB/s | Median | p95 | MB/s | Speedup |
| RPC1,000 JSON echo calls | 118.8 ms | 121.2 ms | not applicable | 158.9 ms | 172.5 ms | not applicable | 1.34× |
| 1 KB1 KB × 1,000 | 129.6 ms | 152.9 ms | 15.8 | 169.9 ms | 172.7 ms | 12.1 | 1.31× |
| 1 MB1 MB × 100 | 580.0 ms | 587.9 ms | 344.8 | 644.1 ms | 650.5 ms | 310.5 | 1.11× |
| 5 MB5 MB × 100 | 1991.5 ms | 2012.5 ms | 502.1 | 2790.8 ms | 3098.2 ms | 358.3 | 1.40× |
| 10 MB10 MB × 50 | 1498.5 ms | 1509.6 ms | 667.3 | 2575.2 ms | 2583.9 ms | 388.3 | 1.72× |
| 20 MB20 MB × 100 | 4943.3 ms | 4996.4 ms | 809.2 | 14058.9 ms | 14526.2 ms | 284.5 | 2.84× |
| Runs (ms) | Kurogane | Electron 42 |
|---|---|---|
| RPC | 117.7, 121.2, 118.6, 119.2, 118.8 | 172.5, 165.9, 157.1, 157.3, 158.9 |
| 1 KB | 129.6, 126.8, 127.6, 129.7, 152.9 | 168.3, 168.8, 170.7, 169.9, 172.7 |
| 1 MB | 578.4, 582.9, 577.8, 587.9, 580.0 | 647.6, 641.9, 650.5, 644.1, 640.6 |
| 5 MB | 1962.1, 1970.3, 1991.8, 2012.5, 1991.5 | 3098.2, 2905.9, 2790.8, 2738.8, 2565.8 |
| 10 MB | 1509.6, 1495.9, 1498.5, 1506.1, 1496.0 | 2575.2, 2539.9, 2539.7, 2579.0, 2583.9 |
| 20 MB | 4996.4, 4969.4, 4937.0, 4911.4, 4943.3 | 14526.2, 14312.4, 14058.9, 13074.6, 12951.4 |
Raw dataset
Every run of every workload, for both runtimes, with the test machine — as JSON, for verification and independent analysis.
05 — Methodology
How this was measured
One round trip, taken apart. Follow the numbers — each one is explained below.
1. Timed end to end
A stopwatch starts when the renderer sends a request and stops when the full response is back — wall-clock time, via performance.now().
2. Warmed up, then measured
An untimed warmup for the whole suite, then 3 thrown-away iterations per test, then 5 measured runs. We report the median.
3. Identical bytes
One pre-allocated Uint8Array, reused every iteration, for both runtimes — so we time the IPC, not memory allocation.
4. Default transports only
Large binary payloads go through Kurogane’s shared memory automatically. Electron uses its standard path. Nothing is tuned for the test.
5. Throughput counts both ways
(2 × payload × iterations) ÷ median time. The ×2 is the payload going out plus the echo coming back.
6. Real-world garbage collection
GC is never forced and responses aren’t kept, so collection runs whenever the runtime decides — just like in your app.
Measured on
- OS
- Windows 11 25H2
- CPU
- Ryzen 7 5700X3D
- RAM
- 16 GB DDR4-3200
- Chromium
- 147.0.10
- Kurogane
- 0.0.3
- Electron
- 42.0.1
- Node
- 22.16.0
Both runtimes receive byte-for-byte identical payloads, on the same machine, with the same workload suite — only the IPC call differs.
Don’t take
our word for it.
Clone the repo, run the suite on your own machine, and tell us what you see.