Six-framework baseline

20260922-baseline · complete

Download complete JSON record

Measurements

Research and decisions

Six-framework baselinedecision · 2026-09-22T19:33:22.475Z
First run recorded in the current format. It measures commit a241573 plus the uncommitted benchmark-tooling cleanup, which moved server-rendered HTML out of the fingerprinted build output. There is no earlier run to compare against.

Build: release profile with Binaryen 132 `wasm-opt -O3` through `FUSOR_WASM_OPT`, pinned wasm-bindgen 0.2.105, installed Chrome, framework order seeded with `BENCH_SEED=20261004`.

Recorded 2026-09-22T19:28:46.386Z on Apple M4 Pro, darwin 24.5.0, browser 153.0.8010.53, 15 samples after 3 warmups.

Median milliseconds:

| Metric | fusor | react | svelte | solid | vue | preact |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| ssr-1000 | 0.24 | 0.92 | 0.35 | 0.29 | 1.06 | 1.49 |
| ssr-10000 | 2.74 | 12.66 | 3.87 | 2.84 | 9.36 | 14.32 |
| initial-1000 | 3.00 | 1.70 | 4.00 | 1.10 | 3.60 | 2.90 |
| initial-10000 | 32.60 | 17.50 | 138.30 | 13.10 | 35.20 | 30.80 |
| single | <0.10 | 0.70 | 0.60 | <0.10 | 0.10 | <0.10 |
| bulk-1000 | 0.50 | 1.70 | 1.20 | 0.40 | 1.80 | 1.60 |
| bulk-10000 | 3.90 | 8.70 | 7.10 | 3.80 | 16.10 | 17.40 |
| insert | 2.10 | 2.00 | 9.80 | 0.30 | 6.80 | 2.50 |
| delete | 2.00 | 1.70 | 9.10 | 0.20 | 7.10 | 2.60 |
| swap | 1.40 | 108.60 | 7.90 | 0.70 | 4.70 | 2.50 |
| computed | <0.10 | 0.60 | 0.30 | <0.10 | <0.10 | <0.10 |
| fanout-1000 | 0.30 | 0.90 | 0.20 | 0.20 | 1.70 | 1.20 |
| fanout-10000 | 4.10 | 9.10 | 3.60 | 2.60 | 22.30 | 17.10 |
| fanin | 0.50 | <0.10 | 4.40 | 0.50 | 4.00 | 0.10 |
| unmount | 5.70 | 7.30 | 2.80 | 1.00 | 5.00 | 2.00 |
| events | 15.70 | 45.80 | 27.10 | 20.80 | 31.10 | 30.10 |
| hydration-1000 | 9.60 | 6.60 | 10.30 | 4.00 | 9.40 | 6.70 |
| hydration-10000 | 39.30 | 111.10 | 128.00 | 22.20 | 41.40 | 84.50 |
| startup | 28.50 | 24.00 | 20.10 | 9.70 | 17.80 | 12.70 |

Gzip KiB per fixture:

| Fixture | fusor | react | svelte | solid | vue | preact |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| benchmark workload | 105.0 | 67.4 | 14.5 | 6.1 | 26.3 | 8.5 |
| hello | 54.1 | 66.3 | 9.2 | 4.0 | 23.2 | 4.9 |
| todo | 100.3 | 67.1 | 13.9 | 6.8 | 25.2 | 6.3 |

Every timed operation passed its correctness checks, and the source and artifact receipts matched before and after measurement.

Limitations: one local machine, 15 samples per row with the maximum as P95, no CPU or network throttling, and Chromium-only timings. Values under 0.10 ms are below the browser clock's resolution. Gzip sizes are per file at level 9, excluding headers and Brotli.