Kinetica benchmark comparison
Current 20260716T215731619Z against accepted (no complete versioned run yet) · generated 2026-07-16T23:26:56.667Z
Technical summary
The runs differ in recorded environment metadata; the comparison was explicitly allowed and must be interpreted with that caveat. A change is classified when its direction-adjusted magnitude is at least 5%.
Browser aggregate change
Each bar is the geometric mean of current/baseline median ratios over common browser operations. Left/blue is faster; right/orange is slower. This comparison is descriptive and does not estimate statistical significance.
Largest movements
Regressions
- +354.4% vanilla · mount time
- +251.9% preact · mount time
- +217.2% svelte · mount time
- +177.8% vue · mount time
- +119.5% react · mount time
- +89.1% preact · script compile + evaluate
- +35.4% preact · reverse top-level subtrees
- +32.7% react · select row at 1,000 rows
Improvements
- -150.0% svelte · select row exponent
- -91.4% write + lazy read through 1,000-deep derived chain
- -68.8% re-render 1,000-row table after updating every 10th row
- -65.2% write + recompute through 10,000-wide derived fan
- -60.6% SSR: render parsed docs markdown to HTML string
- -56.3% react · select row exponent
- -56.2% parse all docs-site markdown (80 KB)
- -56.1% render 1,000-row table Node tree (fresh runtime)
Metric-level evidence
Exact baseline/current values and raw percentage changes. For higher-is-better metrics such as FPS, status classification reverses the raw percentage direction.
Browser operations (91)
| Scope | Metric | Baseline | Current | Change | Status |
|---|---|---|---|---|---|
| kinetica · create 1,000 rows | median |
34.44 ms | 39.17 ms | +13.7% | regression |
| kinetica · replace all 1,000 rows | median |
39.21 ms | 41.49 ms | +5.8% | regression |
| kinetica · partial update (every 10th row) | median |
7.700 ms | 7.730 ms | +0.4% | stable |
| kinetica · select row | median |
7.490 ms | 6.830 ms | -8.8% | improvement |
| kinetica · swap two rows | median |
7.400 ms | 7.400 ms | +0.0% | stable |
| kinetica · remove one row | median |
8.250 ms | 8.520 ms | +3.3% | stable |
| kinetica · create 10,000 rows | median |
308.7 ms | 278.4 ms | -9.8% | improvement |
| kinetica · append 1,000 rows to 1,000 | median |
34.89 ms | 41.70 ms | +19.5% | regression |
| kinetica · clear 1,000 rows | median |
6.610 ms | 6.480 ms | -2.0% | stable |
| kinetica · select row (10k table) | median |
7.750 ms | 8.160 ms | +5.3% | regression |
| kinetica · swap two rows (10k table) | median |
45.68 ms | 42.51 ms | -6.9% | improvement |
| kinetica · remove one row (10k table) | median |
57.43 ms | 51.82 ms | -9.8% | improvement |
| kinetica · partial update (every 10th of 10k) | median |
45.23 ms | 42.18 ms | -6.7% | improvement |
| react · create 1,000 rows | median |
33.17 ms | 36.95 ms | +11.4% | regression |
| react · replace all 1,000 rows | median |
34.67 ms | 40.14 ms | +15.8% | regression |
| react · partial update (every 10th row) | median |
7.250 ms | 7.020 ms | -3.2% | stable |
| react · select row | median |
6.600 ms | 6.890 ms | +4.4% | stable |
| react · swap two rows | median |
27.15 ms | 34.77 ms | +28.1% | regression |
| react · remove one row | median |
7.240 ms | 7.210 ms | -0.4% | stable |
| react · create 10,000 rows | median |
328.1 ms | 327.7 ms | -0.1% | stable |
| react · append 1,000 rows to 1,000 | median |
30.50 ms | 37.21 ms | +22.0% | regression |
| react · clear 1,000 rows | median |
7.050 ms | 7.180 ms | +1.8% | stable |
| react · select row (10k table) | median |
7.670 ms | 8.320 ms | +8.5% | regression |
| react · swap two rows (10k table) | median |
50.96 ms | 57.56 ms | +13.0% | regression |
| react · remove one row (10k table) | median |
40.73 ms | 43.41 ms | +6.6% | regression |
| react · partial update (every 10th of 10k) | median |
34.87 ms | 36.90 ms | +5.8% | regression |
| preact · create 1,000 rows | median |
34.08 ms | 38.54 ms | +13.1% | regression |
| preact · replace all 1,000 rows | median |
36.87 ms | 40.02 ms | +8.5% | regression |
| preact · partial update (every 10th row) | median |
8.170 ms | 7.280 ms | -10.9% | improvement |
| preact · select row | median |
8.370 ms | 7.550 ms | -9.8% | improvement |
| preact · swap two rows | median |
7.340 ms | 8.030 ms | +9.4% | regression |
| preact · remove one row | median |
7.870 ms | 7.100 ms | -9.8% | improvement |
| preact · create 10,000 rows | median |
260.4 ms | 256.0 ms | -1.7% | stable |
| preact · append 1,000 rows to 1,000 | median |
36.10 ms | 37.31 ms | +3.4% | stable |
| preact · clear 1,000 rows | median |
7.540 ms | 6.890 ms | -8.6% | improvement |
| preact · select row (10k table) | median |
9.230 ms | 7.940 ms | -14.0% | improvement |
| preact · swap two rows (10k table) | median |
33.09 ms | 33.77 ms | +2.1% | stable |
| preact · remove one row (10k table) | median |
42.68 ms | 43.54 ms | +2.0% | stable |
| preact · partial update (every 10th of 10k) | median |
38.10 ms | 37.22 ms | -2.3% | stable |
| vue · create 1,000 rows | median |
29.28 ms | 29.87 ms | +2.0% | stable |
| vue · replace all 1,000 rows | median |
31.13 ms | 32.17 ms | +3.3% | stable |
| vue · partial update (every 10th row) | median |
8.330 ms | 7.850 ms | -5.8% | improvement |
| vue · select row | median |
7.800 ms | 7.310 ms | -6.3% | improvement |
| vue · swap two rows | median |
8.930 ms | 8.250 ms | -7.6% | improvement |
| vue · remove one row | median |
7.880 ms | 7.460 ms | -5.3% | improvement |
| vue · create 10,000 rows | median |
249.1 ms | 232.8 ms | -6.5% | improvement |
| vue · append 1,000 rows to 1,000 | median |
29.10 ms | 27.83 ms | -4.4% | stable |
| vue · clear 1,000 rows | median |
7.240 ms | 7.220 ms | -0.3% | stable |
| vue · select row (10k table) | median |
15.22 ms | 14.68 ms | -3.5% | stable |
| vue · swap two rows (10k table) | median |
44.17 ms | 45.33 ms | +2.6% | stable |
| vue · remove one row (10k table) | median |
52.93 ms | 56.53 ms | +6.8% | regression |
| vue · partial update (every 10th of 10k) | median |
46.00 ms | 47.24 ms | +2.7% | stable |
| svelte · create 1,000 rows | median |
28.54 ms | 23.85 ms | -16.4% | improvement |
| svelte · replace all 1,000 rows | median |
32.24 ms | 27.63 ms | -14.3% | improvement |
| svelte · partial update (every 10th row) | median |
8.060 ms | 7.280 ms | -9.7% | improvement |
| svelte · select row | median |
7.250 ms | 7.260 ms | +0.1% | stable |
| svelte · swap two rows | median |
8.010 ms | 7.140 ms | -10.9% | improvement |
| svelte · remove one row | median |
7.580 ms | 7.110 ms | -6.2% | improvement |
| svelte · create 10,000 rows | median |
220.1 ms | 272.6 ms | +23.8% | regression |
| svelte · append 1,000 rows to 1,000 | median |
30.57 ms | 32.35 ms | +5.8% | regression |
| svelte · clear 1,000 rows | median |
7.390 ms | 7.040 ms | -4.7% | stable |
| svelte · select row (10k table) | median |
8.460 ms | 8.150 ms | -3.7% | stable |
| svelte · swap two rows (10k table) | median |
30.81 ms | 30.95 ms | +0.5% | stable |
| svelte · remove one row (10k table) | median |
43.35 ms | 40.79 ms | -5.9% | improvement |
| svelte · partial update (every 10th of 10k) | median |
31.79 ms | 30.09 ms | -5.3% | improvement |
| vanilla · create 1,000 rows | median |
29.53 ms | 31.77 ms | +7.6% | regression |
| vanilla · replace all 1,000 rows | median |
32.11 ms | 29.82 ms | -7.1% | improvement |
| vanilla · partial update (every 10th row) | median |
7.820 ms | 7.190 ms | -8.1% | improvement |
| vanilla · select row | median |
6.990 ms | 7.470 ms | +6.9% | regression |
| vanilla · swap two rows | median |
7.370 ms | 7.940 ms | +7.7% | regression |
| vanilla · remove one row | median |
7.560 ms | 7.150 ms | -5.4% | improvement |
| vanilla · create 10,000 rows | median |
210.5 ms | 203.0 ms | -3.5% | stable |
| vanilla · append 1,000 rows to 1,000 | median |
31.35 ms | 28.22 ms | -10.0% | improvement |
| vanilla · clear 1,000 rows | median |
6.790 ms | 6.710 ms | -1.2% | stable |
| vanilla · select row (10k table) | median |
8.800 ms | 8.170 ms | -7.2% | improvement |
| vanilla · swap two rows (10k table) | median |
28.11 ms | 27.72 ms | -1.4% | stable |
| vanilla · remove one row (10k table) | median |
42.97 ms | 45.18 ms | +5.1% | regression |
| vanilla · partial update (every 10th of 10k) | median |
32.60 ms | 30.96 ms | -5.0% | improvement |
| compose-web · create 1,000 rows | median |
238.6 ms | 226.6 ms | -5.0% | improvement |
| compose-web · replace all 1,000 rows | median |
360.9 ms | 337.5 ms | -6.5% | improvement |
| compose-web · partial update (every 10th row) | median |
13.34 ms | 12.47 ms | -6.5% | improvement |
| compose-web · select row | median |
12.05 ms | 10.38 ms | -13.9% | improvement |
| compose-web · swap two rows | median |
554.0 ms | 553.1 ms | -0.2% | stable |
| compose-web · remove one row | median |
507.2 ms | 507.1 ms | -0.0% | stable |
| compose-web · create 10,000 rows | median |
7516.8 ms | 7356.1 ms | -2.1% | stable |
| compose-web · append 1,000 rows to 1,000 | median |
240.7 ms | 226.6 ms | -5.9% | improvement |
| compose-web · clear 1,000 rows | median |
21.97 ms | 25.38 ms | +15.5% | regression |
| compose-web · select row (10k table) | median |
23.55 ms | 22.30 ms | -5.3% | improvement |
| compose-web · swap two rows (10k table) | median |
9270.0 ms | 9170.7 ms | -1.1% | stable |
| compose-web · remove one row (10k table) | median |
49225.7 ms | 48296.7 ms | -1.9% | stable |
| compose-web · partial update (every 10th of 10k) | median |
112.4 ms | 69.07 ms | -38.6% | improvement |
Deep tree (28)
| Scope | Metric | Baseline | Current | Change | Status |
|---|---|---|---|---|---|
| kinetica · create tree (1555 nodes) | median |
20.02 ms | 18.81 ms | -6.0% | improvement |
| kinetica · update every 10th leaf | median |
7.070 ms | 7.240 ms | +2.4% | stable |
| kinetica · reverse top-level subtrees | median |
9.860 ms | 11.15 ms | +13.1% | regression |
| kinetica · no-op re-render (data unchanged) | median |
6.910 ms | 7.410 ms | +7.2% | regression |
| react · create tree (1555 nodes) | median |
15.45 ms | 16.81 ms | +8.8% | regression |
| react · update every 10th leaf | median |
6.930 ms | 6.910 ms | -0.3% | stable |
| react · reverse top-level subtrees | median |
8.760 ms | 11.33 ms | +29.3% | regression |
| react · no-op re-render (data unchanged) | median |
6.780 ms | 5.420 ms | -20.1% | improvement |
| preact · create tree (1555 nodes) | median |
15.50 ms | 16.48 ms | +6.3% | regression |
| preact · update every 10th leaf | median |
6.600 ms | 5.940 ms | -10.0% | improvement |
| preact · reverse top-level subtrees | median |
7.370 ms | 9.980 ms | +35.4% | regression |
| preact · no-op re-render (data unchanged) | median |
6.490 ms | 6.030 ms | -7.1% | improvement |
| vue · create tree (1555 nodes) | median |
18.97 ms | 21.42 ms | +12.9% | regression |
| vue · update every 10th leaf | median |
7.150 ms | 7.110 ms | -0.6% | stable |
| vue · reverse top-level subtrees | median |
8.560 ms | 10.03 ms | +17.2% | regression |
| vue · no-op re-render (data unchanged) | median |
6.730 ms | 6.850 ms | +1.8% | stable |
| svelte · create tree (1555 nodes) | median |
20.16 ms | 19.86 ms | -1.5% | stable |
| svelte · update every 10th leaf | median |
6.990 ms | 7.130 ms | +2.0% | stable |
| svelte · reverse top-level subtrees | median |
8.940 ms | 9.600 ms | +7.4% | regression |
| svelte · no-op re-render (data unchanged) | median |
6.270 ms | 6.090 ms | -2.9% | stable |
| vanilla · create tree (1555 nodes) | median |
14.67 ms | 15.94 ms | +8.7% | regression |
| vanilla · update every 10th leaf | median |
6.680 ms | 6.100 ms | -8.7% | improvement |
| vanilla · reverse top-level subtrees | median |
8.770 ms | 10.78 ms | +22.9% | regression |
| vanilla · no-op re-render (data unchanged) | median |
6.440 ms | 5.660 ms | -12.1% | improvement |
| compose-web · create tree (1555 nodes) | median |
54.39 ms | 54.46 ms | +0.1% | stable |
| compose-web · update every 10th leaf | median |
14.78 ms | 15.77 ms | +6.7% | regression |
| compose-web · reverse top-level subtrees | median |
22.10 ms | 22.45 ms | +1.6% | stable |
| compose-web · no-op re-render (data unchanged) | median |
8.150 ms | 6.160 ms | -24.4% | improvement |
Startup and payload (28)
| Scope | Metric | Baseline | Current | Change | Status |
|---|---|---|---|---|---|
| kinetica · mount time | median |
45.00 ms | 34.40 ms | -23.6% | improvement |
| kinetica · script compile + evaluate | scriptMs |
9.610 ms | 8.960 ms | -6.8% | improvement |
| kinetica · total blocking time | tbtMs |
0.000 ms | 0.000 ms | — | stable |
| kinetica · JavaScript payload | gzipBytes |
86.0 KB | 86.1 KB | +0.1% | stable |
| react · mount time | median |
18.50 ms | 40.60 ms | +119.5% | regression |
| react · script compile + evaluate | scriptMs |
13.41 ms | 14.53 ms | +8.4% | regression |
| react · total blocking time | tbtMs |
0.000 ms | 0.000 ms | — | stable |
| react · JavaScript payload | gzipBytes |
60.3 KB | 60.3 KB | +0.0% | stable |
| preact · mount time | median |
7.700 ms | 27.10 ms | +251.9% | regression |
| preact · script compile + evaluate | scriptMs |
4.660 ms | 8.810 ms | +89.1% | regression |
| preact · total blocking time | tbtMs |
0.000 ms | 0.000 ms | — | stable |
| preact · JavaScript payload | gzipBytes |
8.6 KB | 8.6 KB | +0.0% | stable |
| vue · mount time | median |
13.50 ms | 37.50 ms | +177.8% | regression |
| vue · script compile + evaluate | scriptMs |
11.66 ms | 9.450 ms | -19.0% | improvement |
| vue · total blocking time | tbtMs |
0.000 ms | 0.000 ms | — | stable |
| vue · JavaScript payload | gzipBytes |
65.2 KB | 65.2 KB | +0.0% | stable |
| svelte · mount time | median |
8.700 ms | 27.60 ms | +217.2% | regression |
| svelte · script compile + evaluate | scriptMs |
8.950 ms | 5.090 ms | -43.1% | improvement |
| svelte · total blocking time | tbtMs |
0.000 ms | 0.000 ms | — | stable |
| svelte · JavaScript payload | gzipBytes |
20.8 KB | 20.8 KB | +0.0% | stable |
| vanilla · mount time | median |
5.700 ms | 25.90 ms | +354.4% | regression |
| vanilla · script compile + evaluate | scriptMs |
7.080 ms | 6.920 ms | -2.3% | stable |
| vanilla · total blocking time | tbtMs |
0.000 ms | 0.000 ms | — | stable |
| vanilla · JavaScript payload | gzipBytes |
1.2 KB | 1.2 KB | +0.0% | stable |
| compose-web · mount time | median |
44.50 ms | 41.50 ms | -6.7% | improvement |
| compose-web · script compile + evaluate | scriptMs |
17.20 ms | 16.76 ms | -2.6% | stable |
| compose-web · total blocking time | tbtMs |
0.000 ms | 0.000 ms | — | stable |
| compose-web · JavaScript payload | gzipBytes |
171.6 KB | 171.6 KB | +0.0% | stable |
Memory (42)
| Scope | Metric | Baseline | Current | Change | Status |
|---|---|---|---|---|---|
| kinetica · heap after load | afterLoadMb |
1.990 MB | 1.990 MB | +0.0% | stable |
| kinetica · heap after 1k rows | after1kMb |
4.960 MB | 4.950 MB | -0.2% | stable |
| kinetica · heap after 5× replace | after5xReplaceMb |
5.180 MB | 5.180 MB | +0.0% | stable |
| kinetica · heap after 10× create/clear | afterCreateClear10Mb |
3.670 MB | 3.680 MB | +0.3% | stable |
| kinetica · heap after unmount | afterUnmountMb |
3.540 MB | 3.540 MB | +0.0% | stable |
| kinetica · heap after 5× remount | after5xRemountMb |
3.630 MB | 3.630 MB | +0.0% | stable |
| react · heap after load | afterLoadMb |
1.620 MB | 1.620 MB | +0.0% | stable |
| react · heap after 1k rows | after1kMb |
4.400 MB | 4.400 MB | +0.0% | stable |
| react · heap after 5× replace | after5xReplaceMb |
4.990 MB | 4.990 MB | +0.0% | stable |
| react · heap after 10× create/clear | afterCreateClear10Mb |
3.170 MB | 3.170 MB | +0.0% | stable |
| react · heap after unmount | afterUnmountMb |
2.850 MB | 2.850 MB | +0.0% | stable |
| react · heap after 5× remount | after5xRemountMb |
2.840 MB | 2.840 MB | +0.0% | stable |
| preact · heap after load | afterLoadMb |
1.270 MB | 1.270 MB | +0.0% | stable |
| preact · heap after 1k rows | after1kMb |
4.280 MB | 4.280 MB | +0.0% | stable |
| preact · heap after 5× replace | after5xReplaceMb |
4.390 MB | 4.390 MB | +0.0% | stable |
| preact · heap after 10× create/clear | afterCreateClear10Mb |
2.170 MB | 2.170 MB | +0.0% | stable |
| preact · heap after unmount | afterUnmountMb |
2.140 MB | 2.100 MB | -1.9% | stable |
| preact · heap after 5× remount | after5xRemountMb |
2.120 MB | 2.110 MB | -0.5% | stable |
| vue · heap after load | afterLoadMb |
1.850 MB | 1.850 MB | +0.0% | stable |
| vue · heap after 1k rows | after1kMb |
4.430 MB | 4.430 MB | +0.0% | stable |
| vue · heap after 5× replace | after5xReplaceMb |
4.590 MB | 4.590 MB | +0.0% | stable |
| vue · heap after 10× create/clear | afterCreateClear10Mb |
2.940 MB | 2.940 MB | +0.0% | stable |
| vue · heap after unmount | afterUnmountMb |
2.930 MB | 2.930 MB | +0.0% | stable |
| vue · heap after 5× remount | after5xRemountMb |
2.890 MB | 2.910 MB | +0.7% | stable |
| svelte · heap after load | afterLoadMb |
1.290 MB | 1.290 MB | +0.0% | stable |
| svelte · heap after 1k rows | after1kMb |
3.250 MB | 3.240 MB | -0.3% | stable |
| svelte · heap after 5× replace | after5xReplaceMb |
3.420 MB | 3.420 MB | +0.0% | stable |
| svelte · heap after 10× create/clear | afterCreateClear10Mb |
2.410 MB | 2.410 MB | +0.0% | stable |
| svelte · heap after unmount | afterUnmountMb |
2.370 MB | 2.370 MB | +0.0% | stable |
| svelte · heap after 5× remount | after5xRemountMb |
2.390 MB | 2.390 MB | +0.0% | stable |
| vanilla · heap after load | afterLoadMb |
1.150 MB | 1.150 MB | +0.0% | stable |
| vanilla · heap after 1k rows | after1kMb |
1.900 MB | 1.900 MB | +0.0% | stable |
| vanilla · heap after 5× replace | after5xReplaceMb |
1.980 MB | 1.980 MB | +0.0% | stable |
| vanilla · heap after 10× create/clear | afterCreateClear10Mb |
1.920 MB | 1.920 MB | +0.0% | stable |
| vanilla · heap after unmount | afterUnmountMb |
1.930 MB | 1.920 MB | -0.5% | stable |
| vanilla · heap after 5× remount | after5xRemountMb |
1.920 MB | 1.920 MB | +0.0% | stable |
| compose-web · heap after load | afterLoadMb |
2.730 MB | 2.730 MB | +0.0% | stable |
| compose-web · heap after 1k rows | after1kMb |
17.85 MB | 17.86 MB | +0.1% | stable |
| compose-web · heap after 5× replace | after5xReplaceMb |
19.51 MB | 19.50 MB | -0.1% | stable |
| compose-web · heap after 10× create/clear | afterCreateClear10Mb |
7.310 MB | 7.290 MB | -0.3% | stable |
| compose-web · heap after unmount | afterUnmountMb |
4.660 MB | 4.660 MB | +0.0% | stable |
| compose-web · heap after 5× remount | after5xRemountMb |
4.850 MB | 4.850 MB | +0.0% | stable |
Sustained updates (28)
| Scope | Metric | Baseline | Current | Change | Status |
|---|---|---|---|---|---|
| kinetica · animation throughput | fps |
120.0 fps | 120.0 fps | +0.0% | stable |
| kinetica · median frame time | medianMs |
8.300 ms | 8.300 ms | +0.0% | stable |
| kinetica · p95 frame time | p95Ms |
9.300 ms | 9.300 ms | +0.0% | stable |
| kinetica · frames over 25 ms | longFramePct |
0.0% | 0.0% | — | stable |
| react · animation throughput | fps |
120.0 fps | 120.0 fps | +0.0% | stable |
| react · median frame time | medianMs |
8.300 ms | 8.300 ms | +0.0% | stable |
| react · p95 frame time | p95Ms |
10.00 ms | 9.300 ms | -7.0% | improvement |
| react · frames over 25 ms | longFramePct |
0.0% | 0.0% | — | stable |
| preact · animation throughput | fps |
120.0 fps | 120.0 fps | +0.0% | stable |
| preact · median frame time | medianMs |
8.300 ms | 8.300 ms | +0.0% | stable |
| preact · p95 frame time | p95Ms |
10.20 ms | 9.300 ms | -8.8% | improvement |
| preact · frames over 25 ms | longFramePct |
0.0% | 0.0% | — | stable |
| vue · animation throughput | fps |
120.0 fps | 120.0 fps | +0.0% | stable |
| vue · median frame time | medianMs |
8.300 ms | 8.300 ms | +0.0% | stable |
| vue · p95 frame time | p95Ms |
10.30 ms | 9.300 ms | -9.7% | improvement |
| vue · frames over 25 ms | longFramePct |
0.0% | 0.0% | — | stable |
| svelte · animation throughput | fps |
120.0 fps | 120.0 fps | +0.0% | stable |
| svelte · median frame time | medianMs |
8.300 ms | 8.300 ms | +0.0% | stable |
| svelte · p95 frame time | p95Ms |
10.30 ms | 9.300 ms | -9.7% | improvement |
| svelte · frames over 25 ms | longFramePct |
0.0% | 0.0% | — | stable |
| vanilla · animation throughput | fps |
119.8 fps | 120.0 fps | +0.2% | stable |
| vanilla · median frame time | medianMs |
8.300 ms | 8.300 ms | +0.0% | stable |
| vanilla · p95 frame time | p95Ms |
10.10 ms | 9.300 ms | -7.9% | improvement |
| vanilla · frames over 25 ms | longFramePct |
0.0% | 0.0% | — | stable |
| compose-web · animation throughput | fps |
120.0 fps | 120.0 fps | -0.0% | stable |
| compose-web · median frame time | medianMs |
8.300 ms | 8.300 ms | +0.0% | stable |
| compose-web · p95 frame time | p95Ms |
9.800 ms | 10.10 ms | +3.1% | stable |
| compose-web · frames over 25 ms | longFramePct |
0.0% | 0.0% | — | stable |
Scaling (108)
| Scope | Metric | Baseline | Current | Change | Status |
|---|---|---|---|---|---|
| kinetica · select row exponent | exponent |
0.17 | 0.13 | -23.5% | improvement |
| kinetica · select row at 1,000 rows | median |
7.250 ms | 6.960 ms | -4.0% | stable |
| kinetica · select row at 2,000 rows | median |
7.840 ms | 7.350 ms | -6.3% | improvement |
| kinetica · select row at 5,000 rows | median |
7.640 ms | 7.710 ms | +0.9% | stable |
| kinetica · select row at 10,000 rows | median |
8.240 ms | 8.060 ms | -2.2% | stable |
| kinetica · select row at 20,000 rows | median |
13.71 ms | 10.89 ms | -20.6% | improvement |
| kinetica · swap two rows exponent | exponent |
0.76 | 0.74 | -2.6% | stable |
| kinetica · swap two rows at 1,000 rows | median |
8.850 ms | 7.990 ms | -9.7% | improvement |
| kinetica · swap two rows at 2,000 rows | median |
10.32 ms | 10.96 ms | +6.2% | regression |
| kinetica · swap two rows at 5,000 rows | median |
17.11 ms | 21.72 ms | +26.9% | regression |
| kinetica · swap two rows at 10,000 rows | median |
41.42 ms | 37.70 ms | -9.0% | improvement |
| kinetica · swap two rows at 20,000 rows | median |
80.23 ms | 71.55 ms | -10.8% | improvement |
| kinetica · update every 10th row exponent | exponent |
0.75 | 0.74 | -1.3% | stable |
| kinetica · update every 10th row at 1,000 rows | median |
8.290 ms | 8.190 ms | -1.2% | stable |
| kinetica · update every 10th row at 2,000 rows | median |
10.95 ms | 11.03 ms | +0.7% | stable |
| kinetica · update every 10th row at 5,000 rows | median |
22.90 ms | 21.12 ms | -7.8% | improvement |
| kinetica · update every 10th row at 10,000 rows | median |
38.69 ms | 37.16 ms | -4.0% | stable |
| kinetica · update every 10th row at 20,000 rows | median |
76.50 ms | 75.04 ms | -1.9% | stable |
| react · select row exponent | exponent |
0.16 | 0.07 | -56.3% | improvement |
| react · select row at 1,000 rows | median |
6.370 ms | 8.450 ms | +32.7% | regression |
| react · select row at 2,000 rows | median |
7.200 ms | 7.100 ms | -1.4% | stable |
| react · select row at 5,000 rows | median |
8.310 ms | 8.730 ms | +5.1% | regression |
| react · select row at 10,000 rows | median |
8.050 ms | 8.430 ms | +4.7% | stable |
| react · select row at 20,000 rows | median |
11.03 ms | 10.00 ms | -9.3% | improvement |
| react · swap two rows exponent | exponent |
0.33 | 0.28 | -15.2% | improvement |
| react · swap two rows at 1,000 rows | median |
34.44 ms | 34.16 ms | -0.8% | stable |
| react · swap two rows at 2,000 rows | median |
33.83 ms | 36.27 ms | +7.2% | regression |
| react · swap two rows at 5,000 rows | median |
44.70 ms | 42.18 ms | -5.6% | improvement |
| react · swap two rows at 10,000 rows | median |
58.26 ms | 55.29 ms | -5.1% | improvement |
| react · swap two rows at 20,000 rows | median |
91.78 ms | 81.51 ms | -11.2% | improvement |
| react · update every 10th row exponent | exponent |
0.81 | 0.74 | -8.6% | improvement |
| react · update every 10th row at 1,000 rows | median |
6.880 ms | 7.570 ms | +10.0% | regression |
| react · update every 10th row at 2,000 rows | median |
9.590 ms | 9.090 ms | -5.2% | improvement |
| react · update every 10th row at 5,000 rows | median |
17.10 ms | 18.25 ms | +6.7% | regression |
| react · update every 10th row at 10,000 rows | median |
37.50 ms | 32.61 ms | -13.0% | improvement |
| react · update every 10th row at 20,000 rows | median |
75.94 ms | 67.17 ms | -11.5% | improvement |
| preact · select row exponent | exponent |
0.19 | 0.13 | -31.6% | improvement |
| preact · select row at 1,000 rows | median |
7.100 ms | 7.670 ms | +8.0% | regression |
| preact · select row at 2,000 rows | median |
8.040 ms | 7.410 ms | -7.8% | improvement |
| preact · select row at 5,000 rows | median |
8.320 ms | 8.100 ms | -2.6% | stable |
| preact · select row at 10,000 rows | median |
8.480 ms | 8.360 ms | -1.4% | stable |
| preact · select row at 20,000 rows | median |
14.38 ms | 12.12 ms | -15.7% | improvement |
| preact · swap two rows exponent | exponent |
0.76 | 0.71 | -6.6% | improvement |
| preact · swap two rows at 1,000 rows | median |
7.550 ms | 7.340 ms | -2.8% | stable |
| preact · swap two rows at 2,000 rows | median |
8.610 ms | 10.42 ms | +21.0% | regression |
| preact · swap two rows at 5,000 rows | median |
15.97 ms | 18.30 ms | +14.6% | regression |
| preact · swap two rows at 10,000 rows | median |
35.07 ms | 32.24 ms | -8.1% | improvement |
| preact · swap two rows at 20,000 rows | median |
66.96 ms | 61.65 ms | -7.9% | improvement |
| preact · update every 10th row exponent | exponent |
0.81 | 0.76 | -6.2% | improvement |
| preact · update every 10th row at 1,000 rows | median |
7.160 ms | 7.380 ms | +3.1% | stable |
| preact · update every 10th row at 2,000 rows | median |
8.570 ms | 9.680 ms | +13.0% | regression |
| preact · update every 10th row at 5,000 rows | median |
19.26 ms | 19.87 ms | +3.2% | stable |
| preact · update every 10th row at 10,000 rows | median |
36.63 ms | 36.66 ms | +0.1% | stable |
| preact · update every 10th row at 20,000 rows | median |
75.71 ms | 69.52 ms | -8.2% | improvement |
| vue · select row exponent | exponent |
0.44 | 0.41 | -6.8% | improvement |
| vue · select row at 1,000 rows | median |
7.950 ms | 7.490 ms | -5.8% | improvement |
| vue · select row at 2,000 rows | median |
8.060 ms | 8.310 ms | +3.1% | stable |
| vue · select row at 5,000 rows | median |
8.810 ms | 7.990 ms | -9.3% | improvement |
| vue · select row at 10,000 rows | median |
15.62 ms | 14.54 ms | -6.9% | improvement |
| vue · select row at 20,000 rows | median |
30.74 ms | 27.59 ms | -10.2% | improvement |
| vue · swap two rows exponent | exponent |
0.77 | 0.76 | -1.3% | stable |
| vue · swap two rows at 1,000 rows | median |
7.950 ms | 8.300 ms | +4.4% | stable |
| vue · swap two rows at 2,000 rows | median |
13.20 ms | 11.97 ms | -9.3% | improvement |
| vue · swap two rows at 5,000 rows | median |
26.64 ms | 26.09 ms | -2.1% | stable |
| vue · swap two rows at 10,000 rows | median |
42.48 ms | 42.91 ms | +1.0% | stable |
| vue · swap two rows at 20,000 rows | median |
81.60 ms | 78.18 ms | -4.2% | stable |
| vue · update every 10th row exponent | exponent |
0.80 | 0.78 | -2.5% | stable |
| vue · update every 10th row at 1,000 rows | median |
7.820 ms | 8.780 ms | +12.3% | regression |
| vue · update every 10th row at 2,000 rows | median |
13.55 ms | 11.83 ms | -12.7% | improvement |
| vue · update every 10th row at 5,000 rows | median |
21.26 ms | 24.31 ms | +14.3% | regression |
| vue · update every 10th row at 10,000 rows | median |
43.34 ms | 43.76 ms | +1.0% | stable |
| vue · update every 10th row at 20,000 rows | median |
93.04 ms | 90.04 ms | -3.2% | stable |
| svelte · select row exponent | exponent |
0.04 | -0.02 | -150.0% | improvement |
| svelte · select row at 1,000 rows | median |
7.270 ms | 8.280 ms | +13.9% | regression |
| svelte · select row at 2,000 rows | median |
7.390 ms | 8.890 ms | +20.3% | regression |
| svelte · select row at 5,000 rows | median |
7.760 ms | 8.310 ms | +7.1% | regression |
| svelte · select row at 10,000 rows | median |
7.550 ms | 7.930 ms | +5.0% | regression |
| svelte · select row at 20,000 rows | median |
8.470 ms | 8.310 ms | -1.9% | stable |
| svelte · swap two rows exponent | exponent |
0.72 | 0.65 | -9.7% | improvement |
| svelte · swap two rows at 1,000 rows | median |
7.300 ms | 8.420 ms | +15.3% | regression |
| svelte · swap two rows at 2,000 rows | median |
8.040 ms | 9.260 ms | +15.2% | regression |
| svelte · swap two rows at 5,000 rows | median |
14.72 ms | 17.45 ms | +18.5% | regression |
| svelte · swap two rows at 10,000 rows | median |
29.60 ms | 29.81 ms | +0.7% | stable |
| svelte · swap two rows at 20,000 rows | median |
59.55 ms | 56.20 ms | -5.6% | improvement |
| svelte · update every 10th row exponent | exponent |
0.74 | 0.67 | -9.5% | improvement |
| svelte · update every 10th row at 1,000 rows | median |
7.240 ms | 8.070 ms | +11.5% | regression |
| svelte · update every 10th row at 2,000 rows | median |
8.260 ms | 9.750 ms | +18.0% | regression |
| svelte · update every 10th row at 5,000 rows | median |
17.98 ms | 16.55 ms | -8.0% | improvement |
| svelte · update every 10th row at 10,000 rows | median |
31.84 ms | 30.87 ms | -3.0% | stable |
| svelte · update every 10th row at 20,000 rows | median |
60.46 ms | 59.02 ms | -2.4% | stable |
| vanilla · select row exponent | exponent |
0.05 | 0.05 | +0.0% | stable |
| vanilla · select row at 1,000 rows | median |
6.850 ms | 7.080 ms | +3.4% | stable |
| vanilla · select row at 2,000 rows | median |
7.070 ms | 7.800 ms | +10.3% | regression |
| vanilla · select row at 5,000 rows | median |
8.050 ms | 8.160 ms | +1.4% | stable |
| vanilla · select row at 10,000 rows | median |
8.250 ms | 7.880 ms | -4.5% | stable |
| vanilla · select row at 20,000 rows | median |
7.700 ms | 8.410 ms | +9.2% | regression |
| vanilla · swap two rows exponent | exponent |
0.72 | 0.67 | -6.9% | improvement |
| vanilla · swap two rows at 1,000 rows | median |
7.020 ms | 7.170 ms | +2.1% | stable |
| vanilla · swap two rows at 2,000 rows | median |
8.950 ms | 9.290 ms | +3.8% | stable |
| vanilla · swap two rows at 5,000 rows | median |
12.89 ms | 15.41 ms | +19.6% | regression |
| vanilla · swap two rows at 10,000 rows | median |
27.78 ms | 27.76 ms | -0.1% | stable |
| vanilla · swap two rows at 20,000 rows | median |
62.77 ms | 52.73 ms | -16.0% | improvement |
| vanilla · update every 10th row exponent | exponent |
0.81 | 0.73 | -9.9% | improvement |
| vanilla · update every 10th row at 1,000 rows | median |
6.480 ms | 8.050 ms | +24.2% | regression |
| vanilla · update every 10th row at 2,000 rows | median |
8.100 ms | 8.630 ms | +6.5% | regression |
| vanilla · update every 10th row at 5,000 rows | median |
18.51 ms | 17.44 ms | -5.8% | improvement |
| vanilla · update every 10th row at 10,000 rows | median |
34.20 ms | 31.63 ms | -7.5% | improvement |
| vanilla · update every 10th row at 20,000 rows | median |
69.52 ms | 67.19 ms | -3.4% | stable |
JVM microbenchmarks (9)
| Scope | Metric | Baseline | Current | Change | Status |
|---|---|---|---|---|---|
| write + recompute through 10,000-wide derived fan | medianMs |
3.125 ms | 1.087 ms | -65.2% | improvement |
| cached read of a join over 10,000 unchanged dependencies | medianMs |
0.000 ms | 0.000 ms | -33.3% | improvement |
| write + lazy read through 1,000-deep derived chain | medianMs |
0.775 ms | 0.067 ms | -91.4% | improvement |
| write + lazy read through 500-deep derived chain (complexity probe: 1k should cost ~2x this = linear) | medianMs |
0.071 ms | 0.081 ms | +13.9% | regression |
| write + recompute through 100-wide diamond | medianMs |
0.030 ms | 0.015 ms | -50.2% | improvement |
| render 1,000-row table Node tree (fresh runtime) | medianMs |
4.313 ms | 1.895 ms | -56.1% | improvement |
| re-render 1,000-row table after updating every 10th row | medianMs |
1.702 ms | 0.531 ms | -68.8% | improvement |
| parse all docs-site markdown (80 KB) | medianMs |
3.213 ms | 1.406 ms | -56.2% | improvement |
| SSR: render parsed docs markdown to HTML string | medianMs |
6.181 ms | 2.437 ms | -60.6% | improvement |
Bundle sizes (12)
| Scope | Metric | Baseline | Current | Change | Status |
|---|---|---|---|---|---|
| kinetica/browser-bench-bundle | gzipBytes |
86.1 KB | 86.1 KB | +0.0% | stable |
| kinetica/browser-bench-js | gzipBytes |
274.7 KB | 274.7 KB | -0.0% | stable |
| bench/vanilla | gzipBytes |
1.2 KB | 1.2 KB | +0.0% | stable |
| bench/react | gzipBytes |
60.3 KB | 60.3 KB | +0.0% | stable |
| bench/preact | gzipBytes |
8.6 KB | 8.6 KB | +0.0% | stable |
| bench/vue | gzipBytes |
65.2 KB | 65.2 KB | +0.0% | stable |
| bench/svelte | gzipBytes |
20.8 KB | 20.8 KB | +0.0% | stable |
| bench/vanilla-tree | gzipBytes |
0.8 KB | 0.8 KB | +0.0% | stable |
| bench/react-tree | gzipBytes |
59.6 KB | 59.6 KB | +0.0% | stable |
| bench/preact-tree | gzipBytes |
5.9 KB | 5.9 KB | +0.0% | stable |
| bench/vue-tree | gzipBytes |
64.8 KB | 64.8 KB | +0.0% | stable |
| bench/svelte-tree | gzipBytes |
20.2 KB | 20.2 KB | +0.0% | stable |
Scope and metric definitions
Methodology and robustness
Only metrics present in both runs are compared. No missing value is imputed. Browser identity checks cover Chromium, CPU, architecture, platform and throttle where recorded; JVM checks cover runtime and OS. Sample distributions are retained in source JSON, while this report compares medians.
Limitations
- Percentage thresholds are practical noise guards, not confidence intervals.
- Results from different machines, browser builds, throttle settings or JVMs are blocked by default.
- A filtered run can compare only its common subset; aggregate changes state the number of included scenarios.
- Bundle size comparisons are deterministic for identical build inputs; runtime measurements are not.
Recommended next steps
- Inspect the largest same-environment regressions in the metric tables and raw samples.
- Repeat surprising runtime changes with more iterations before accepting a baseline.
- Promote and update documentation only from a complete all-framework run.
Further questions
Do the largest deltas reproduce in a second run, and do CPU profiles or allocation traces explain them?