One setup. Exact DOM work.
1/101
Across 100 scalar updates, Loom evaluates the component once while Preact and Octane evaluate it 101 times. All paths perform 100 text mutations and zero child-list mutations.
Every number below is tied to a correctness fixture, a pinned comparison target, and an explicit measurement boundary. Timing is directional local evidence; semantics and size are CI gates.
3 warmups, 8 rotated samples, and 2 complete runs. Lower is better.
| Operation | Labfull target · 15.4 kB | Preact11.0.0-beta.2 · 12.8 kB | Octane0.1.13 · 105.0 kB | Solid1.9.14 · 16.5 kB | Svelte5.56.7 · 54.6 kB |
|---|---|---|---|---|---|
| Create 1,000 | 2.60–2.95 | 6.45–6.50 | 3.20 | 2.60fastest | 13.60–13.95 |
| Replace 1,000 | 5.10–5.35fastest | 10.80–11.10 | 5.45–6.05 | 5.85 | 16.60–17.15 |
| Append 1,000 | 2.70–2.75fastest | 6.65–6.70 | 3.30 | 2.85–2.95 | 20.30–20.50 |
| Update every tenth | 0.40 | 1.70 | 0.40 | 0.40fastest | 1.60 |
| Select | 0.15fastest | 1.60 | 0.40 | 0.20 | 1.10 |
| Swap rows | 0.40–0.50 | 1.50 | 0.45–0.50 | 0.40–0.50fastest | 1.30–1.50 |
| Remove row | 0.35–0.40fastest | 1.60 | 0.40 | 0.40 | 1.30–1.40 |
| Create 10,000 | 25.20–26.80 | 53.15–53.65 | 28.30–28.90 | 25.85–25.90fastest | 188.35–189.00 |
| Clear 10,000 | 29.15–29.90 | 31.40–31.65 | 28.40–29.40fastest | 30.95–31.40 | 29.30–33.20 |
Across 100 scalar updates, Loom evaluates the component once while Preact and Octane evaluate it 101 times. All paths perform 100 text mutations and zero child-list mutations.
Synchronous hydration only. The fixture asserts server-node identity and excludes HTML parsing. Streaming, Suspense, and resume are outside this result.