preact icon indicating copy to clipboard operation
preact copied to clipboard

Always clone VNodes before using them

Open developit opened this issue 3 years ago • 2 comments

If the perf impact isn't huge, this might be a way to avoid the need to clean up VNodes (#3709).

developit avatar Sep 02 '22 20:09 developit

📊 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

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master125.78ms - 128.18ms-unsure 🔍
-3% - +7%
-3.29ms - +8.48ms
unsure 🔍
-2% - +8%
-2.88ms - +9.96ms
preact-local118.62ms - 130.14msunsure 🔍
-7% - +3%
-8.48ms - +3.29ms
-unsure 🔍
-6% - +8%
-7.60ms - +9.48ms
preact-hooks117.13ms - 129.75msunsure 🔍
-8% - +2%
-9.96ms - +2.88ms
unsure 🔍
-8% - +6%
-9.48ms - +7.60ms
-

usedJSHeapSize

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master3.78ms - 3.80ms-faster ✔
10% - 17%
0.40ms - 0.75ms
faster ✔
11% - 18%
0.45ms - 0.83ms
preact-local4.20ms - 4.54msslower ❌
11% - 20%
0.40ms - 0.75ms
-unsure 🔍
-7% - +4%
-0.32ms - +0.19ms
preact-hooks4.25ms - 4.62msslower ❌
12% - 22%
0.45ms - 0.83ms
unsure 🔍
-4% - +7%
-0.19ms - +0.32ms
-

run-warmup-0

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master1.07ms - 1.12ms-unsure 🔍
-1% - +5%
-0.01ms - +0.06ms
unsure 🔍
-1% - +5%
-0.02ms - +0.05ms
preact-local1.05ms - 1.09msunsure 🔍
-5% - +1%
-0.06ms - +0.01ms
-unsure 🔍
-3% - +3%
-0.04ms - +0.03ms
preact-hooks1.05ms - 1.10msunsure 🔍
-5% - +1%
-0.05ms - +0.02ms
unsure 🔍
-3% - +3%
-0.03ms - +0.04ms
-

run-warmup-1

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master0.57ms - 0.72ms-unsure 🔍
-22% - +18%
-0.15ms - +0.12ms
slower ❌
1% - 30%
0.01ms - 0.17ms
preact-local0.55ms - 0.77msunsure 🔍
-18% - +23%
-0.12ms - +0.15ms
-unsure 🔍
-2% - +38%
-0.01ms - +0.21ms
preact-hooks0.53ms - 0.59msfaster ✔
2% - 24%
0.01ms - 0.17ms
unsure 🔍
-30% - -1%
-0.21ms - +0.01ms
-

run-warmup-2

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master0.64ms - 0.69ms-unsure 🔍
-7% - +13%
-0.04ms - +0.08ms
unsure 🔍
-1% - +17%
-0.01ms - +0.10ms
preact-local0.58ms - 0.70msunsure 🔍
-13% - +6%
-0.08ms - +0.04ms
-unsure 🔍
-8% - +17%
-0.05ms - +0.10ms
preact-hooks0.57ms - 0.66msunsure 🔍
-15% - +1%
-0.10ms - +0.01ms
unsure 🔍
-16% - +7%
-0.10ms - +0.05ms
-

run-warmup-3

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master0.37ms - 0.43ms-faster ✔
13% - 30%
0.06ms - 0.16ms
faster ✔
12% - 30%
0.05ms - 0.16ms
preact-local0.47ms - 0.55msslower ❌
14% - 41%
0.06ms - 0.16ms
-unsure 🔍
-10% - +12%
-0.05ms - +0.06ms
preact-hooks0.46ms - 0.55msslower ❌
12% - 41%
0.05ms - 0.16ms
unsure 🔍
-12% - +10%
-0.06ms - +0.05ms
-

run-warmup-4

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master0.51ms - 0.59ms-unsure 🔍
-11% - +16%
-0.06ms - +0.09ms
unsure 🔍
-12% - +12%
-0.07ms - +0.07ms
preact-local0.48ms - 0.60msunsure 🔍
-16% - +10%
-0.09ms - +0.06ms
-unsure 🔍
-17% - +11%
-0.10ms - +0.06ms
preact-hooks0.50ms - 0.61msunsure 🔍
-12% - +12%
-0.07ms - +0.07ms
unsure 🔍
-12% - +18%
-0.06ms - +0.10ms
-

run-final

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master0.37ms - 0.43ms-slower ❌
42% - 84%
0.11ms - 0.20ms
slower ❌
29% - 70%
0.09ms - 0.18ms
preact-local0.22ms - 0.27msfaster ✔
31% - 47%
0.11ms - 0.20ms
-unsure 🔍
-22% - +5%
-0.06ms - +0.02ms
preact-hooks0.24ms - 0.30msfaster ✔
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

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master59.89ms - 62.96ms-unsure 🔍
-3% - +3%
-1.83ms - +1.90ms
unsure 🔍
-4% - +2%
-2.69ms - +1.35ms
preact-local60.32ms - 62.45msunsure 🔍
-3% - +3%
-1.90ms - +1.83ms
-unsure 🔍
-4% - +2%
-2.40ms - +0.98ms
preact-hooks60.78ms - 63.41msunsure 🔍
-2% - +4%
-1.35ms - +2.69ms
unsure 🔍
-2% - +4%
-0.98ms - +2.40ms
-

usedJSHeapSize

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master3.75ms - 3.79ms-faster ✔
10% - 11%
0.43ms - 0.47ms
faster ✔
11% - 12%
0.45ms - 0.49ms
preact-local4.22ms - 4.23msslower ❌
11% - 13%
0.43ms - 0.47ms
-faster ✔
0% - 1%
0.01ms - 0.03ms
preact-hooks4.24ms - 4.25msslower ❌
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

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master1863.36ms - 1888.78ms-unsure 🔍
-1% - +0%
-24.07ms - +8.93ms
faster ✔
0% - 2%
0.50ms - 34.99ms
preact-local1873.12ms - 1894.16msunsure 🔍
-0% - +1%
-8.93ms - +24.07ms
-unsure 🔍
-1% - +0%
-25.88ms - +5.53ms
preact-hooks1882.16ms - 1905.47msslower ❌
0% - 2%
0.50ms - 34.99ms
unsure 🔍
-0% - +1%
-5.53ms - +25.88ms
-

usedJSHeapSize

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master25.59ms - 25.59ms-faster ✔
13% - 13%
3.88ms - 3.89ms
faster ✔
13% - 13%
3.90ms - 3.90ms
preact-local29.47ms - 29.47msslower ❌
15% - 15%
3.88ms - 3.89ms
-unsure 🔍
-0% - -0%
-0.02ms - -0.02ms
preact-hooks29.49ms - 29.49msslower ❌
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

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master28.36ms - 29.84ms-slower ❌
71% - 80%
11.77ms - 13.26ms
slower ❌
71% - 80%
11.77ms - 13.27ms
preact-local16.49ms - 16.67msfaster ✔
42% - 45%
11.77ms - 13.26ms
-unsure 🔍
-1% - +1%
-0.12ms - +0.12ms
preact-hooks16.49ms - 16.66msfaster ✔
42% - 45%
11.77ms - 13.27ms
unsure 🔍
-1% - +1%
-0.12ms - +0.12ms
-

usedJSHeapSize

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master1.81ms - 1.82ms-unsure 🔍
+0% - +0%
+0.01ms - +0.01ms
faster ✔
0% - 1%
0.01ms - 0.01ms
preact-local1.81ms - 1.81msunsure 🔍
-0% - -0%
-0.01ms - -0.01ms
-faster ✔
1% - 1%
0.02ms - 0.02ms
preact-hooks1.82ms - 1.82msslower ❌
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

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master107.44ms - 110.91ms-slower ❌
0% - 5%
0.37ms - 4.88ms
unsure 🔍
-1% - +4%
-0.57ms - +4.46ms
preact-local105.10ms - 107.98msfaster ✔
0% - 4%
0.37ms - 4.88ms
-unsure 🔍
-3% - +2%
-3.01ms - +1.64ms
preact-hooks105.41ms - 109.05msunsure 🔍
-4% - +1%
-4.46ms - +0.57ms
unsure 🔍
-2% - +3%
-1.64ms - +3.01ms
-

usedJSHeapSize

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master6.41ms - 6.44ms-faster ✔
11% - 11%
0.76ms - 0.82ms
faster ✔
11% - 12%
0.78ms - 0.84ms
preact-local7.19ms - 7.23msslower ❌
12% - 13%
0.76ms - 0.82ms
-unsure 🔍
-1% - +0%
-0.06ms - +0.01ms
preact-hooks7.21ms - 7.26msslower ❌
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

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master31.34ms - 32.80ms-slower ❌
89% - 98%
14.79ms - 16.26ms
slower ❌
89% - 98%
14.78ms - 16.24ms
preact-local16.50ms - 16.59msfaster ✔
47% - 50%
14.79ms - 16.26ms
-unsure 🔍
-1% - +0%
-0.08ms - +0.05ms
preact-hooks16.51ms - 16.61msfaster ✔
47% - 50%
14.78ms - 16.24ms
unsure 🔍
-0% - +1%
-0.05ms - +0.08ms
-

usedJSHeapSize

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master4.88ms - 4.88ms-faster ✔
11% - 11%
0.60ms - 0.60ms
faster ✔
11% - 11%
0.61ms - 0.62ms
preact-local5.48ms - 5.48msslower ❌
12% - 12%
0.60ms - 0.60ms
-unsure 🔍
-0% - -0%
-0.01ms - -0.01ms
preact-hooks5.49ms - 5.49msslower ❌
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

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master2.96ms - 2.99ms-slower ❌
68% - 73%
1.20ms - 1.26ms
slower ❌
59% - 65%
1.11ms - 1.18ms
preact-local1.73ms - 1.77msfaster ✔
41% - 42%
1.20ms - 1.26ms
-faster ✔
3% - 7%
0.05ms - 0.12ms
preact-hooks1.80ms - 1.86msfaster ✔
37% - 39%
1.11ms - 1.18ms
slower ❌
3% - 7%
0.05ms - 0.12ms
-

usedJSHeapSize

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master1.05ms - 1.05ms-slower ❌
2% - 2%
0.02ms - 0.02ms
slower ❌
1% - 1%
0.01ms - 0.01ms
preact-local1.02ms - 1.02msfaster ✔
2% - 2%
0.02ms - 0.02ms
-faster ✔
1% - 1%
0.01ms - 0.01ms
preact-hooks1.03ms - 1.03msfaster ✔
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

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master52.62ms - 53.14ms-faster ✔
0% - 2%
0.20ms - 1.11ms
faster ✔
2% - 4%
1.27ms - 1.95ms
preact-local53.16ms - 53.91msslower ❌
0% - 2%
0.20ms - 1.11ms
-faster ✔
1% - 3%
0.52ms - 1.39ms
preact-hooks54.28ms - 54.71msslower ❌
2% - 4%
1.27ms - 1.95ms
slower ❌
1% - 3%
0.52ms - 1.39ms
-

usedJSHeapSize

VersionAvg timevs preact-mastervs preact-localvs preact-hooks
preact-master1.42ms - 1.46ms-unsure 🔍
-0% - +4%
-0.00ms - +0.05ms
unsure 🔍
-1% - +3%
-0.02ms - +0.04ms
preact-local1.39ms - 1.44msunsure 🔍
-4% - +0%
-0.05ms - +0.00ms
-unsure 🔍
-3% - +1%
-0.05ms - +0.02ms
preact-hooks1.41ms - 1.45msunsure 🔍
-3% - +1%
-0.04ms - +0.02ms
unsure 🔍
-1% - +3%
-0.02ms - +0.05ms
-

tachometer-reporter-action v2 for Benchmarks

github-actions[bot] avatar Sep 02 '22 20:09 github-actions[bot]

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

compressed-size-action

github-actions[bot] avatar Sep 02 '22 20:09 github-actions[bot]