preact
preact copied to clipboard
Always clone VNodes before using them
If the perf impact isn't huge, this might be a way to avoid the need to clean up VNodes (#3709).
📊 Tachometer Benchmark Results
Summary
duration
- 02_replace1k: slower ❌ 4% - 14% (6.46ms - 20.71ms)
preact-local vs preact-master - 03_update10th1k_x16: unsure 🔍 -2% - +4% (-0.67ms - +1.43ms)
preact-local vs preact-master - 07_create10k: slower ❌ 0% - 2% (2.04ms - 18.16ms)
preact-local vs preact-master - filter_list: faster ✔ 28% - 29% (6.39ms - 6.83ms)
preact-local vs preact-master - hydrate1k: unsure 🔍 -4% - +2% (-6.41ms - +3.05ms)
preact-local vs preact-master - many_updates: faster ✔ 49% - 52% (16.14ms - 17.61ms)
preact-local vs preact-master - text_update: faster ✔ 40% - 43% (1.17ms - 1.24ms)
preact-local vs preact-master - todo: slower ❌ 0% - 2% (0.20ms - 1.11ms)
preact-local vs preact-master
usedJSHeapSize
- 02_replace1k: slower ❌ 3% - 10% (0.12ms - 0.39ms)
preact-local vs preact-master - 03_update10th1k_x16: slower ❌ 11% - 12% (0.42ms - 0.46ms)
preact-local vs preact-master - 07_create10k: slower ❌ 15% - 15% (3.88ms - 3.89ms)
preact-local vs preact-master - filter_list: unsure 🔍 -0% - -0% (-0.00ms - -0.00ms)
preact-local vs preact-master - hydrate1k: slower ❌ 12% - 13% (0.77ms - 0.81ms)
preact-local vs preact-master - many_updates: slower ❌ 12% - 12% (0.60ms - 0.60ms)
preact-local vs preact-master - text_update: faster ✔ 2% - 2% (0.02ms - 0.02ms)
preact-local vs preact-master - todo: unsure 🔍 -4% - +0% (-0.05ms - +0.00ms)
preact-local vs preact-master
Results
02_replace1k
- Browser: chrome-headless 104.0.5112.101
- Sample size: 70
- Built by: Benchmarks #880
-
Commit: daca89d
duration
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 125.78ms - 128.18ms | - | unsure 🔍 -3% - +7% -3.29ms - +8.48ms | unsure 🔍 -2% - +8% -2.88ms - +9.96ms |
| preact-local | 118.62ms - 130.14ms | unsure 🔍 -7% - +3% -8.48ms - +3.29ms | - | unsure 🔍 -6% - +8% -7.60ms - +9.48ms |
| preact-hooks | 117.13ms - 129.75ms | unsure 🔍 -8% - +2% -9.96ms - +2.88ms | unsure 🔍 -8% - +6% -9.48ms - +7.60ms | - |
usedJSHeapSize
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 3.78ms - 3.80ms | - | faster ✔ 10% - 17% 0.40ms - 0.75ms | faster ✔ 11% - 18% 0.45ms - 0.83ms |
| preact-local | 4.20ms - 4.54ms | slower ❌ 11% - 20% 0.40ms - 0.75ms | - | unsure 🔍 -7% - +4% -0.32ms - +0.19ms |
| preact-hooks | 4.25ms - 4.62ms | slower ❌ 12% - 22% 0.45ms - 0.83ms | unsure 🔍 -4% - +7% -0.19ms - +0.32ms | - |
run-warmup-0
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 1.07ms - 1.12ms | - | unsure 🔍 -1% - +5% -0.01ms - +0.06ms | unsure 🔍 -1% - +5% -0.02ms - +0.05ms |
| preact-local | 1.05ms - 1.09ms | unsure 🔍 -5% - +1% -0.06ms - +0.01ms | - | unsure 🔍 -3% - +3% -0.04ms - +0.03ms |
| preact-hooks | 1.05ms - 1.10ms | unsure 🔍 -5% - +1% -0.05ms - +0.02ms | unsure 🔍 -3% - +3% -0.03ms - +0.04ms | - |
run-warmup-1
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 0.57ms - 0.72ms | - | unsure 🔍 -22% - +18% -0.15ms - +0.12ms | slower ❌ 1% - 30% 0.01ms - 0.17ms |
| preact-local | 0.55ms - 0.77ms | unsure 🔍 -18% - +23% -0.12ms - +0.15ms | - | unsure 🔍 -2% - +38% -0.01ms - +0.21ms |
| preact-hooks | 0.53ms - 0.59ms | faster ✔ 2% - 24% 0.01ms - 0.17ms | unsure 🔍 -30% - -1% -0.21ms - +0.01ms | - |
run-warmup-2
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 0.64ms - 0.69ms | - | unsure 🔍 -7% - +13% -0.04ms - +0.08ms | unsure 🔍 -1% - +17% -0.01ms - +0.10ms |
| preact-local | 0.58ms - 0.70ms | unsure 🔍 -13% - +6% -0.08ms - +0.04ms | - | unsure 🔍 -8% - +17% -0.05ms - +0.10ms |
| preact-hooks | 0.57ms - 0.66ms | unsure 🔍 -15% - +1% -0.10ms - +0.01ms | unsure 🔍 -16% - +7% -0.10ms - +0.05ms | - |
run-warmup-3
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 0.37ms - 0.43ms | - | faster ✔ 13% - 30% 0.06ms - 0.16ms | faster ✔ 12% - 30% 0.05ms - 0.16ms |
| preact-local | 0.47ms - 0.55ms | slower ❌ 14% - 41% 0.06ms - 0.16ms | - | unsure 🔍 -10% - +12% -0.05ms - +0.06ms |
| preact-hooks | 0.46ms - 0.55ms | slower ❌ 12% - 41% 0.05ms - 0.16ms | unsure 🔍 -12% - +10% -0.06ms - +0.05ms | - |
run-warmup-4
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 0.51ms - 0.59ms | - | unsure 🔍 -11% - +16% -0.06ms - +0.09ms | unsure 🔍 -12% - +12% -0.07ms - +0.07ms |
| preact-local | 0.48ms - 0.60ms | unsure 🔍 -16% - +10% -0.09ms - +0.06ms | - | unsure 🔍 -17% - +11% -0.10ms - +0.06ms |
| preact-hooks | 0.50ms - 0.61ms | unsure 🔍 -12% - +12% -0.07ms - +0.07ms | unsure 🔍 -12% - +18% -0.06ms - +0.10ms | - |
run-final
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 0.37ms - 0.43ms | - | slower ❌ 42% - 84% 0.11ms - 0.20ms | slower ❌ 29% - 70% 0.09ms - 0.18ms |
| preact-local | 0.22ms - 0.27ms | faster ✔ 31% - 47% 0.11ms - 0.20ms | - | unsure 🔍 -22% - +5% -0.06ms - +0.02ms |
| preact-hooks | 0.24ms - 0.30ms | faster ✔ 24% - 42% 0.09ms - 0.18ms | unsure 🔍 -7% - +26% -0.02ms - +0.06ms | - |
03_update10th1k_x16
- Browser: chrome-headless 104.0.5112.101
- Sample size: 60
- Built by: Benchmarks #880
-
Commit: daca89d
duration
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 59.89ms - 62.96ms | - | unsure 🔍 -3% - +3% -1.83ms - +1.90ms | unsure 🔍 -4% - +2% -2.69ms - +1.35ms |
| preact-local | 60.32ms - 62.45ms | unsure 🔍 -3% - +3% -1.90ms - +1.83ms | - | unsure 🔍 -4% - +2% -2.40ms - +0.98ms |
| preact-hooks | 60.78ms - 63.41ms | unsure 🔍 -2% - +4% -1.35ms - +2.69ms | unsure 🔍 -2% - +4% -0.98ms - +2.40ms | - |
usedJSHeapSize
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 3.75ms - 3.79ms | - | faster ✔ 10% - 11% 0.43ms - 0.47ms | faster ✔ 11% - 12% 0.45ms - 0.49ms |
| preact-local | 4.22ms - 4.23ms | slower ❌ 11% - 13% 0.43ms - 0.47ms | - | faster ✔ 0% - 1% 0.01ms - 0.03ms |
| preact-hooks | 4.24ms - 4.25ms | slower ❌ 12% - 13% 0.45ms - 0.49ms | slower ❌ 0% - 1% 0.01ms - 0.03ms | - |
07_create10k
- Browser: chrome-headless 104.0.5112.101
- Sample size: 50
- Built by: Benchmarks #880
-
Commit: daca89d
duration
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 1863.36ms - 1888.78ms | - | unsure 🔍 -1% - +0% -24.07ms - +8.93ms | faster ✔ 0% - 2% 0.50ms - 34.99ms |
| preact-local | 1873.12ms - 1894.16ms | unsure 🔍 -0% - +1% -8.93ms - +24.07ms | - | unsure 🔍 -1% - +0% -25.88ms - +5.53ms |
| preact-hooks | 1882.16ms - 1905.47ms | slower ❌ 0% - 2% 0.50ms - 34.99ms | unsure 🔍 -0% - +1% -5.53ms - +25.88ms | - |
usedJSHeapSize
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 25.59ms - 25.59ms | - | faster ✔ 13% - 13% 3.88ms - 3.89ms | faster ✔ 13% - 13% 3.90ms - 3.90ms |
| preact-local | 29.47ms - 29.47ms | slower ❌ 15% - 15% 3.88ms - 3.89ms | - | unsure 🔍 -0% - -0% -0.02ms - -0.02ms |
| preact-hooks | 29.49ms - 29.49ms | slower ❌ 15% - 15% 3.90ms - 3.90ms | unsure 🔍 +0% - +0% +0.02ms - +0.02ms | - |
filter_list
- Browser: chrome-headless 104.0.5112.101
- Sample size: 50
- Built by: Benchmarks #880
-
Commit: daca89d
duration
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 28.36ms - 29.84ms | - | slower ❌ 71% - 80% 11.77ms - 13.26ms | slower ❌ 71% - 80% 11.77ms - 13.27ms |
| preact-local | 16.49ms - 16.67ms | faster ✔ 42% - 45% 11.77ms - 13.26ms | - | unsure 🔍 -1% - +1% -0.12ms - +0.12ms |
| preact-hooks | 16.49ms - 16.66ms | faster ✔ 42% - 45% 11.77ms - 13.27ms | unsure 🔍 -1% - +1% -0.12ms - +0.12ms | - |
usedJSHeapSize
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 1.81ms - 1.82ms | - | unsure 🔍 +0% - +0% +0.01ms - +0.01ms | faster ✔ 0% - 1% 0.01ms - 0.01ms |
| preact-local | 1.81ms - 1.81ms | unsure 🔍 -0% - -0% -0.01ms - -0.01ms | - | faster ✔ 1% - 1% 0.02ms - 0.02ms |
| preact-hooks | 1.82ms - 1.82ms | slower ❌ 0% - 1% 0.01ms - 0.01ms | slower ❌ 1% - 1% 0.02ms - 0.02ms | - |
hydrate1k
- Browser: chrome-headless 104.0.5112.101
- Sample size: 50
- Built by: Benchmarks #880
-
Commit: daca89d
duration
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 107.44ms - 110.91ms | - | slower ❌ 0% - 5% 0.37ms - 4.88ms | unsure 🔍 -1% - +4% -0.57ms - +4.46ms |
| preact-local | 105.10ms - 107.98ms | faster ✔ 0% - 4% 0.37ms - 4.88ms | - | unsure 🔍 -3% - +2% -3.01ms - +1.64ms |
| preact-hooks | 105.41ms - 109.05ms | unsure 🔍 -4% - +1% -4.46ms - +0.57ms | unsure 🔍 -2% - +3% -1.64ms - +3.01ms | - |
usedJSHeapSize
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 6.41ms - 6.44ms | - | faster ✔ 11% - 11% 0.76ms - 0.82ms | faster ✔ 11% - 12% 0.78ms - 0.84ms |
| preact-local | 7.19ms - 7.23ms | slower ❌ 12% - 13% 0.76ms - 0.82ms | - | unsure 🔍 -1% - +0% -0.06ms - +0.01ms |
| preact-hooks | 7.21ms - 7.26ms | slower ❌ 12% - 13% 0.78ms - 0.84ms | unsure 🔍 -0% - +1% -0.01ms - +0.06ms | - |
many_updates
- Browser: chrome-headless 104.0.5112.101
- Sample size: 50
- Built by: Benchmarks #880
-
Commit: daca89d
duration
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 31.34ms - 32.80ms | - | slower ❌ 89% - 98% 14.79ms - 16.26ms | slower ❌ 89% - 98% 14.78ms - 16.24ms |
| preact-local | 16.50ms - 16.59ms | faster ✔ 47% - 50% 14.79ms - 16.26ms | - | unsure 🔍 -1% - +0% -0.08ms - +0.05ms |
| preact-hooks | 16.51ms - 16.61ms | faster ✔ 47% - 50% 14.78ms - 16.24ms | unsure 🔍 -0% - +1% -0.05ms - +0.08ms | - |
usedJSHeapSize
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 4.88ms - 4.88ms | - | faster ✔ 11% - 11% 0.60ms - 0.60ms | faster ✔ 11% - 11% 0.61ms - 0.62ms |
| preact-local | 5.48ms - 5.48ms | slower ❌ 12% - 12% 0.60ms - 0.60ms | - | unsure 🔍 -0% - -0% -0.01ms - -0.01ms |
| preact-hooks | 5.49ms - 5.49ms | slower ❌ 13% - 13% 0.61ms - 0.62ms | unsure 🔍 +0% - +0% +0.01ms - +0.01ms | - |
text_update
- Browser: chrome-headless 104.0.5112.101
- Sample size: 190
- Built by: Benchmarks #880
-
Commit: daca89d
duration
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 2.96ms - 2.99ms | - | slower ❌ 68% - 73% 1.20ms - 1.26ms | slower ❌ 59% - 65% 1.11ms - 1.18ms |
| preact-local | 1.73ms - 1.77ms | faster ✔ 41% - 42% 1.20ms - 1.26ms | - | faster ✔ 3% - 7% 0.05ms - 0.12ms |
| preact-hooks | 1.80ms - 1.86ms | faster ✔ 37% - 39% 1.11ms - 1.18ms | slower ❌ 3% - 7% 0.05ms - 0.12ms | - |
usedJSHeapSize
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 1.05ms - 1.05ms | - | slower ❌ 2% - 2% 0.02ms - 0.02ms | slower ❌ 1% - 1% 0.01ms - 0.01ms |
| preact-local | 1.02ms - 1.02ms | faster ✔ 2% - 2% 0.02ms - 0.02ms | - | faster ✔ 1% - 1% 0.01ms - 0.01ms |
| preact-hooks | 1.03ms - 1.03ms | faster ✔ 1% - 1% 0.01ms - 0.01ms | slower ❌ 1% - 1% 0.01ms - 0.01ms | - |
todo
- Browser: chrome-headless 104.0.5112.101
- Sample size: 50
- Built by: Benchmarks #878
-
Commit: 57a034e
duration
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 52.62ms - 53.14ms | - | faster ✔ 0% - 2% 0.20ms - 1.11ms | faster ✔ 2% - 4% 1.27ms - 1.95ms |
| preact-local | 53.16ms - 53.91ms | slower ❌ 0% - 2% 0.20ms - 1.11ms | - | faster ✔ 1% - 3% 0.52ms - 1.39ms |
| preact-hooks | 54.28ms - 54.71ms | slower ❌ 2% - 4% 1.27ms - 1.95ms | slower ❌ 1% - 3% 0.52ms - 1.39ms | - |
usedJSHeapSize
| Version | Avg time | vs preact-master | vs preact-local | vs preact-hooks |
|---|---|---|---|---|
| preact-master | 1.42ms - 1.46ms | - | unsure 🔍 -0% - +4% -0.00ms - +0.05ms | unsure 🔍 -1% - +3% -0.02ms - +0.04ms |
| preact-local | 1.39ms - 1.44ms | unsure 🔍 -4% - +0% -0.05ms - +0.00ms | - | unsure 🔍 -3% - +1% -0.05ms - +0.02ms |
| preact-hooks | 1.41ms - 1.45ms | unsure 🔍 -3% - +1% -0.04ms - +0.02ms | unsure 🔍 -1% - +3% -0.02ms - +0.05ms | - |
Size Change: +102 B (0%)
Total Size: 52.4 kB
| Filename | Size | Change | |
|---|---|---|---|
dist/preact.js |
4.05 kB | +35 B (0%) | |
dist/preact.min.js |
4.07 kB | +34 B (0%) | |
dist/preact.min.module.js |
4.07 kB | +33 B (0%) | |
dist/preact.min.umd.js |
4.1 kB | +34 B (0%) | |
dist/preact.module.js |
4.06 kB | +35 B (0%) | |
dist/preact.umd.js |
4.11 kB | +33 B (0%) | |
jsx-runtime/dist/jsxRuntime.js |
322 B | -36 B (11%) | 👏 |
jsx-runtime/dist/jsxRuntime.module.js |
290 B | -34 B (11%) | 👏 |
jsx-runtime/dist/jsxRuntime.umd.js |
407 B | -32 B (7%) | ✅ |
ℹ️ View Unchanged
| Filename | Size | Change | |
|---|---|---|---|
compat/dist/compat.js |
3.77 kB | 0 B | |
compat/dist/compat.module.js |
3.71 kB | 0 B | |
compat/dist/compat.umd.js |
3.84 kB | 0 B | |
debug/dist/debug.js |
3.01 kB | 0 B | |
debug/dist/debug.module.js |
3.01 kB | 0 B | |
debug/dist/debug.umd.js |
3.09 kB | 0 B | |
devtools/dist/devtools.js |
231 B | 0 B | |
devtools/dist/devtools.module.js |
240 B | 0 B | |
devtools/dist/devtools.umd.js |
315 B | 0 B | |
hooks/dist/hooks.js |
1.4 kB | 0 B | |
hooks/dist/hooks.module.js |
1.43 kB | 0 B | |
hooks/dist/hooks.umd.js |
1.48 kB | 0 B | |
test-utils/dist/testUtils.js |
442 B | 0 B | |
test-utils/dist/testUtils.module.js |
444 B | 0 B | |
test-utils/dist/testUtils.umd.js |
526 B | 0 B |