Local benchmark snapshot
These results compare table operations, including 1,000-row and 10,000-row creation, across six implementations. Lower time and lower heap use are better. Treat this page as a reproducible local signal, not a universal framework ranking.
CPU rows show the mean and Student-t 95% confidence interval from ten samples after five warmups. Heap rows are single validated readings, each collected in an isolated fresh page. Use them to investigate a regression or compare a change on the same machine and Chromium version, not to choose a framework from one local snapshot.
Each adapter retains its existing row-identity strategy, ranging from full replacement to positional or keyed reuse. The per-operation charts compare those complete behaviors and are not combined into an overall framework score.
The current snapshot ran on an Apple M4 Pro with 12 logical cores, 24 GiB of host memory, and an arm64 runtime. The generated report records this host data alongside the Chromium, Node, commit, and timestamp for every future run.
create rows
Lower time is better.
| Framework | Time | Compared with reference |
|---|---|---|
| taipa | 46.0 ms (43.9-48.0 95% CI) | Reference |
| vanillajs | 46.2 ms (43.9-48.5 95% CI) | +0.4% slower |
| lit-html | 51.4 ms (49.9-52.9 95% CI) | +11.8% slower |
| ilha | 52.0 ms (50.6-53.4 95% CI) | +13.1% slower |
| vue | 52.5 ms (48.4-56.6 95% CI) | +14.2% slower |
| react | 121.3 ms (118.7-123.9 95% CI) | +163.9% slower |
create 10,000 rows
Lower time is better.
| Framework | Time | Compared with reference |
|---|---|---|
| vanillajs | 210.0 ms (205.5-214.5 95% CI) | Reference |
| taipa | 212.2 ms (208.7-215.6 95% CI) | +1.0% slower |
| vue | 254.2 ms (249.5-259.0 95% CI) | +21.0% slower |
| lit-html | 260.9 ms (255.0-266.9 95% CI) | +24.2% slower |
| ilha | 274.8 ms (253.4-296.3 95% CI) | +30.8% slower |
| react | 548.6 ms (543.9-553.4 95% CI) | +161.2% slower |
replace all rows
Lower time is better.
| Framework | Time | Compared with reference |
|---|---|---|
| taipa | 20.6 ms (19.3-21.9 95% CI) | Reference |
| vanillajs | 21.2 ms (19.7-22.7 95% CI) | +2.8% slower |
| vue | 24.4 ms (23.9-24.9 95% CI) | +18.6% slower |
| ilha | 33.6 ms (32.9-34.4 95% CI) | +63.3% slower |
| lit-html | 37.0 ms (36.7-37.4 95% CI) | +79.8% slower |
| react | 45.1 ms (44.1-46.0 95% CI) | +118.8% slower |
append 1,000 rows
Lower time is better.
| Framework | Time | Compared with reference |
|---|---|---|
| lit-html | 27.2 ms (26.1-28.2 95% CI) | Reference |
| vue | 27.6 ms (26.9-28.3 95% CI) | +1.7% slower |
| vanillajs | 37.3 ms (35.7-38.9 95% CI) | +37.3% slower |
| taipa | 37.8 ms (36.5-39.1 95% CI) | +39.0% slower |
| react | 43.5 ms (42.7-44.2 95% CI) | +60.0% slower |
| ilha | 50.2 ms (47.7-52.8 95% CI) | +84.8% slower |
partial update
Lower time is better.
| Framework | Time | Compared with reference |
|---|---|---|
| lit-html | 10.5 ms (6.6-14.3 95% CI) | Reference |
| vue | 10.8 ms (7.4-14.3 95% CI) | +3.7% slower |
| react | 12.9 ms (11.6-14.2 95% CI) | +23.3% slower |
| vanillajs | 20.1 ms (18.5-21.7 95% CI) | +92.0% slower |
| taipa | 20.7 ms (18.9-22.5 95% CI) | +97.8% slower |
| ilha | 26.4 ms (25.9-26.9 95% CI) | +152.6% slower |
swap rows
Lower time is better.
| Framework | Time | Compared with reference |
|---|---|---|
| vue | 12.3 ms (9.1-15.4 95% CI) | Reference |
| lit-html | 13.0 ms (9.9-16.2 95% CI) | +6.1% slower |
| vanillajs | 19.1 ms (17.7-20.5 95% CI) | +55.8% slower |
| taipa | 19.6 ms (18.8-20.4 95% CI) | +60.0% slower |
| react | 25.4 ms (24.7-26.1 95% CI) | +106.9% slower |
| ilha | 25.7 ms (25.4-26.0 95% CI) | +109.7% slower |
run memory
Lower heap use is better.
| Framework | Heap used | Compared with reference |
|---|---|---|
| vanillajs | 2.31 MB | Reference |
| taipa | 2.68 MB | +16.0% more heap |
| ilha | 2.93 MB | +26.8% more heap |
| lit-html | 3.23 MB | +40.1% more heap |
| vue | 5.42 MB | +134.9% more heap |
| react | 15.06 MB | +552.6% more heap |
update memory
Lower heap use is better.
| Framework | Heap used | Compared with reference |
|---|---|---|
| vanillajs | 2.57 MB | Reference |
| taipa | 2.99 MB | +16.4% more heap |
| ilha | 3.33 MB | +29.4% more heap |
| lit-html | 3.53 MB | +37.4% more heap |
| vue | 5.73 MB | +122.8% more heap |
| react | 16.75 MB | +551.4% more heap |
Reproduce locally
pnpm --filter @taipa/benchmarks benchThe harness creates 1,000 and 10,000 rows, replaces all rows, appends 1,000 rows, updates every tenth row, swaps two rows, and records Chromium JavaScript heap after creation and update. Each table names whether it measures time or heap. Compare runs only on the same machine and browser build.