[]previous and next page

Benchmarks

The row benchmark behind the numbers on the home page: the app, the machine, the method and every measurement, read from the newest run.

For agentsUpdated

One app, written three times: a table of rows with buttons to create, update, swap, remove and clear them. It is built in ShadowJS, Solid and React for production and run in Chromium. This page holds the whole table, the conditions and how to run it again. Every number below is read from the newest result file when the site is built.

What is measured#

  • JavaScript shipped. The gzip size of the app's production JavaScript.
  • Row operations. The time from the click to the next painted frame, for eight operations on a table of rows. The median of the samples is shown.
  • Heap. The JavaScript heap a page of 1,000 rows adds, after a full garbage collection.

Conditions#

Condition Value
Date 2026-10-18
Machine Apple M5 Pro, 15 logical CPUs, 48 GiB, darwin 27.0.0
Browser 153.0.8010.12 (Chromium)
Frameworks React 19.3.0, Solid 1.9.17, and ShadowJS built from this repository
Samples 30 per operation and framework
Result file tools/bench/results/bench-20261018-132411.json

Results#

Median time of the operation, in milliseconds. Operations that finish within about two frames of each other (the frame floor of this run is 32.1 ms) cannot be ranked by it.

Operation ShadowJS Solid React
Create 1,000 rows (cannot be told apart) 33.4 ms 33.4 ms 33.3 ms
Create 10,000 rows (cannot be told apart) 236.8 ms 230.7 ms 343.6 ms
Update every 10th row (cannot be told apart) 31.6 ms 31.4 ms 31.1 ms
Select a row (cannot be told apart) 32.2 ms 31.1 ms 31.5 ms
Swap two rows (cannot be told apart) 32.0 ms 31.6 ms 32.9 ms
Remove a row (cannot be told apart) 31.5 ms 31.9 ms 32.6 ms
Clear all rows (cannot be told apart) 31.8 ms 31.7 ms 31.6 ms
Append 1,000 rows (cannot be told apart) 32.8 ms 33.1 ms 32.5 ms
Size and memory ShadowJS Solid React
JavaScript shipped, gzip 12 KiB 7.5 KiB 67.2 KiB
JavaScript heap added by 1,000 rows 2.24 MiB 2.11 MiB 2.1 MiB

Reading the numbers#

  • ShadowJS ships 12 KiB of JavaScript for this app, less than React (67.2 KiB) and more than Solid (7.5 KiB).
  • Creating 10,000 rows takes ShadowJS 236.8 ms, React 343.6 ms and Solid 230.7 ms.
  • On the other 7 operations, 7 finish within the frame floor of each other in this run, so it does not rank them.
  • With 1,000 rows ShadowJS adds 2.24 MiB of JavaScript heap, Solid 2.11 MiB and React 2.1 MiB.

A run measures one app on one machine. It supports these statements and nothing wider. Treat differences inside the frame floor as ties.

Run it again#

sh
npm --prefix tools/bench install
npm run bench

The runner writes a new file to tools/bench/results, and the next build of this site reads it.