fast
fast copied to clipboard
feat: new behavior and execution context model
Pull Request
📖 Description
This is currently an experiment. I think the APIs are nicer but it's TBD how this will affect performance.
🎫 Issues
👩💻 Reviewer Notes
📑 Test Plan
✅ Checklist
- [ ] I have included a change request file using
$ yarn change
- [ ] I have added tests for my changes.
- [ ] I have tested my changes.
- [ ] I have updated the project documentation to reflect my changes.
- [ ] I have read the CONTRIBUTING documentation and followed the standards for this project.
⏭ Next Steps
📊 Tachometer Benchmark Results
Summary
clickTrigger10x
- repeat-basic-splice-itemCount=1000&deleteCount=20&addCount=20: unsure 🔍 -2% - +1% (-2.57ms - +1.44ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-basic-splice-loopCount=1000&itemCount=1000&deleteCount=10&addCount=10: slower ❌ 0% - 5% (0.42ms - 7.14ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-push-itemCount=100&addCount=20: unsure 🔍 -3% - +0% (-12.27ms - +0.12ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-push-loopCount=200&itemCount=200: slower ❌ 1% - 2% (29.55ms - 70.55ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-reverse-itemCount=100: slower ❌ 2% - 5% (5.06ms - 17.41ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-reverse-loopCount=200&itemCount=200: slower ❌ 17% - 18% (1378.28ms - 1435.11ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-shift-itemCount=100: unsure 🔍 -2% - +0% (-5.38ms - +0.20ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-shift-loopCount=200&itemCount=200: unsure 🔍 -0% - +1% (-5.73ms - +82.94ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-unshift-itemCount=100&addCount=20: unsure 🔍 -1% - +2% (-1.59ms - +5.69ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-unshift-loopCount=200&itemCount=200&addCount=1: slower ❌ 1% - 3% (27.72ms - 110.31ms)
users/eisenbergeffect/behavior-revision vs master Customize summary
create10k
- render-create10k: slower ❌ 3% - 6% (4.29ms - 9.49ms)
users/eisenbergeffect/behavior-revision vs master Customize summary
createDelete5x
- render-createDelete5x: slower ❌ 3% - 5% (8.34ms - 15.11ms)
users/eisenbergeffect/behavior-revision vs master Customize summary
runFile1k
- observable-runFile1k: unsure 🔍 -7% - +16% (-0.48ms - +1.12ms)
users/eisenbergeffect/behavior-revision vs master Customize summary
update10th
- render-update10th: unsure 🔍 -1% - +2% (-1.60ms - +3.05ms)
users/eisenbergeffect/behavior-revision vs master Customize summary
usedJSHeapSize
- observable-runFile1k: unsure 🔍 -1% - +0% (-0.29ms - +0.21ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - render-create10k: slower ❌ 1% - 1% (0.26ms - 0.29ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - render-createDelete5x: slower ❌ 2% - 3% (1.29ms - 1.38ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - render-update10th: slower ❌ 1% - 1% (0.28ms - 0.30ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-basic-splice-itemCount=1000&deleteCount=20&addCount=20: unsure 🔍 +0% - +0% (+0.19ms - +0.23ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-basic-splice-loopCount=1000&itemCount=1000&deleteCount=10&addCount=10: slower ❌ 0% - 1% (0.26ms - 0.70ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-push-itemCount=100&addCount=20: slower ❌ 2% - 2% (1.11ms - 1.20ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-push-loopCount=200&itemCount=200: slower ❌ 20% - 20% (18.47ms - 18.53ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-reverse-itemCount=100: slower ❌ 5% - 5% (2.73ms - 2.92ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-reverse-loopCount=200&itemCount=200: slower ❌ 24% - 24% (31.20ms - 31.38ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-shift-itemCount=100: slower ❌ 2% - 2% (1.08ms - 1.17ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-shift-loopCount=200&itemCount=200: slower ❌ 21% - 21% (18.67ms - 18.71ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-unshift-itemCount=100&addCount=20: slower ❌ 2% - 2% (1.10ms - 1.19ms)
users/eisenbergeffect/behavior-revision vs master Customize summary - repeat-nested-unshift-loopCount=200&itemCount=200&addCount=1: slower ❌ 20% - 20% (18.61ms - 18.64ms)
users/eisenbergeffect/behavior-revision vs master Customize summary
Results
observable-runFile1k
- Browser: chrome-headless 105.0.5195.102
- Sample size: 130
- Built by: Validate Benchmarks #225
-
Commit: 03fbbce
runFile1k
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 6.49ms - 7.59ms | - | unsure 🔍 -15% - +6% -1.12ms - +0.48ms |
users/eisenbergeffect/behavior-revision | 6.77ms - 7.94ms | unsure 🔍 -7% - +16% -0.48ms - +1.12ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 48.81ms - 49.15ms | - | unsure 🔍 -0% - +1% -0.21ms - +0.29ms |
users/eisenbergeffect/behavior-revision | 48.76ms - 49.12ms | unsure 🔍 -1% - +0% -0.29ms - +0.21ms | - |
render-create10k
- Browser: chrome-headless 105.0.5195.102
- Sample size: 50
- Built by: Validate Benchmarks #225
-
Commit: 03fbbce
create10k
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 166.24ms - 169.87ms | - | faster ✔ 2% - 5% 4.29ms - 9.49ms |
users/eisenbergeffect/behavior-revision | 173.09ms - 176.80ms | slower ❌ 3% - 6% 4.29ms - 9.49ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 46.97ms - 47.00ms | - | faster ✔ 1% - 1% 0.26ms - 0.29ms |
users/eisenbergeffect/behavior-revision | 47.25ms - 47.27ms | slower ❌ 1% - 1% 0.26ms - 0.29ms | - |
render-createDelete5x
- Browser: chrome-headless 105.0.5195.102
- Sample size: 50
- Built by: Validate Benchmarks #225
-
Commit: 03fbbce
createDelete5x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 313.96ms - 319.01ms | - | faster ✔ 3% - 5% 8.34ms - 15.11ms |
users/eisenbergeffect/behavior-revision | 325.95ms - 330.47ms | slower ❌ 3% - 5% 8.34ms - 15.11ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 53.20ms - 53.22ms | - | faster ✔ 2% - 3% 1.29ms - 1.38ms |
users/eisenbergeffect/behavior-revision | 54.50ms - 54.59ms | slower ❌ 2% - 3% 1.29ms - 1.38ms | - |
render-update10th
- Browser: chrome-headless 105.0.5195.102
- Sample size: 100
- Built by: Validate Benchmarks #225
-
Commit: 03fbbce
update10th
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 174.99ms - 178.75ms | - | unsure 🔍 -2% - +1% -3.05ms - +1.60ms |
users/eisenbergeffect/behavior-revision | 176.23ms - 178.97ms | unsure 🔍 -1% - +2% -1.60ms - +3.05ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 46.96ms - 46.98ms | - | faster ✔ 1% - 1% 0.28ms - 0.30ms |
users/eisenbergeffect/behavior-revision | 47.26ms - 47.27ms | slower ❌ 1% - 1% 0.28ms - 0.30ms | - |
repeat-basic-splice-itemCount=1000&deleteCount=20&addCount=20
- Browser: chrome-headless 105.0.5195.102
- Sample size: 110
- Built by: Validate Benchmarks #225
-
Commit: 03fbbce
clickTrigger10x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 125.50ms - 128.41ms | - | unsure 🔍 -1% - +2% -1.44ms - +2.57ms |
users/eisenbergeffect/behavior-revision | 125.00ms - 127.77ms | unsure 🔍 -2% - +1% -2.57ms - +1.44ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 46.17ms - 46.20ms | - | unsure 🔍 -0% - -0% -0.23ms - -0.19ms |
users/eisenbergeffect/behavior-revision | 46.38ms - 46.40ms | unsure 🔍 +0% - +0% +0.19ms - +0.23ms | - |
repeat-basic-splice-loopCount=1000&itemCount=1000&deleteCount=10&addCount=10
- Browser: chrome-headless 104.0.5112.101
- Sample size: 50
- Built by: Validate Benchmarks #214
-
Commit: 3e54a2a
clickTrigger10x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 145.69ms - 151.88ms | - | faster ✔ 0% - 5% 0.42ms - 7.14ms |
users/eisenbergeffect/behavior-revision | 151.26ms - 153.86ms | slower ❌ 0% - 5% 0.42ms - 7.14ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 53.06ms - 53.51ms | - | faster ✔ 0% - 1% 0.26ms - 0.70ms |
users/eisenbergeffect/behavior-revision | 53.75ms - 53.78ms | slower ❌ 0% - 1% 0.26ms - 0.70ms | - |
repeat-nested-push-itemCount=100&addCount=20
- Browser: chrome-headless 105.0.5195.102
- Sample size: 80
- Built by: Validate Benchmarks #225
-
Commit: 03fbbce
clickTrigger10x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 380.93ms - 391.34ms | - | unsure 🔍 -0% - +3% -0.12ms - +12.27ms |
users/eisenbergeffect/behavior-revision | 376.69ms - 383.43ms | unsure 🔍 -3% - +0% -12.27ms - +0.12ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 50.64ms - 50.69ms | - | faster ✔ 2% - 2% 1.11ms - 1.20ms |
users/eisenbergeffect/behavior-revision | 51.78ms - 51.86ms | slower ❌ 2% - 2% 1.11ms - 1.20ms | - |
repeat-nested-push-loopCount=200&itemCount=200
- Browser: chrome-headless 104.0.5112.101
- Sample size: 50
- Built by: Validate Benchmarks #211
-
Commit: 9ffd533
clickTrigger10x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 3322.43ms - 3336.66ms | - | faster ✔ 1% - 2% 29.55ms - 70.55ms |
users/eisenbergeffect/behavior-revision | 3360.37ms - 3398.82ms | slower ❌ 1% - 2% 29.55ms - 70.55ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 91.55ms - 91.60ms | - | faster ✔ 17% - 17% 18.47ms - 18.53ms |
users/eisenbergeffect/behavior-revision | 110.06ms - 110.09ms | slower ❌ 20% - 20% 18.47ms - 18.53ms | - |
repeat-nested-reverse-itemCount=100
- Browser: chrome-headless 105.0.5195.102
- Sample size: 50
- Built by: Validate Benchmarks #225
-
Commit: 03fbbce
clickTrigger10x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 322.74ms - 329.42ms | - | faster ✔ 2% - 5% 5.06ms - 17.41ms |
users/eisenbergeffect/behavior-revision | 332.12ms - 342.51ms | slower ❌ 2% - 5% 5.06ms - 17.41ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 55.83ms - 55.86ms | - | faster ✔ 5% - 5% 2.73ms - 2.92ms |
users/eisenbergeffect/behavior-revision | 58.58ms - 58.77ms | slower ❌ 5% - 5% 2.73ms - 2.92ms | - |
repeat-nested-reverse-loopCount=200&itemCount=200
- Browser: chrome-headless 104.0.5112.101
- Sample size: 50
- Built by: Validate Benchmarks #215
-
Commit: b6426f8
clickTrigger10x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 7879.11ms - 7919.93ms | - | faster ✔ 15% - 15% 1378.28ms - 1435.11ms |
users/eisenbergeffect/behavior-revision | 9286.44ms - 9325.99ms | slower ❌ 17% - 18% 1378.28ms - 1435.11ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 131.00ms - 131.03ms | - | faster ✔ 19% - 19% 31.20ms - 31.38ms |
users/eisenbergeffect/behavior-revision | 162.21ms - 162.39ms | slower ❌ 24% - 24% 31.20ms - 31.38ms | - |
repeat-nested-shift-itemCount=100
- Browser: chrome-headless 105.0.5195.102
- Sample size: 90
- Built by: Validate Benchmarks #225
-
Commit: 03fbbce
clickTrigger10x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 251.80ms - 255.85ms | - | unsure 🔍 -0% - +2% -0.20ms - +5.38ms |
users/eisenbergeffect/behavior-revision | 249.31ms - 253.15ms | unsure 🔍 -2% - +0% -5.38ms - +0.20ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 50.65ms - 50.67ms | - | faster ✔ 2% - 2% 1.08ms - 1.17ms |
users/eisenbergeffect/behavior-revision | 51.74ms - 51.83ms | slower ❌ 2% - 2% 1.08ms - 1.17ms | - |
repeat-nested-shift-loopCount=200&itemCount=200
- Browser: chrome-headless 104.0.5112.101
- Sample size: 60
- Built by: Validate Benchmarks #214
-
Commit: 3e54a2a
clickTrigger10x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 6292.33ms - 6370.93ms | - | unsure 🔍 -1% - +0% -82.94ms - +5.73ms |
users/eisenbergeffect/behavior-revision | 6349.72ms - 6390.75ms | unsure 🔍 -0% - +1% -5.73ms - +82.94ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 90.94ms - 90.96ms | - | faster ✔ 17% - 17% 18.67ms - 18.71ms |
users/eisenbergeffect/behavior-revision | 109.62ms - 109.65ms | slower ❌ 21% - 21% 18.67ms - 18.71ms | - |
repeat-nested-unshift-itemCount=100&addCount=20
- Browser: chrome-headless 105.0.5195.102
- Sample size: 80
- Built by: Validate Benchmarks #225
-
Commit: 03fbbce
clickTrigger10x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 288.89ms - 293.29ms | - | unsure 🔍 -2% - +1% -5.69ms - +1.59ms |
users/eisenbergeffect/behavior-revision | 290.24ms - 296.04ms | unsure 🔍 -1% - +2% -1.59ms - +5.69ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 50.66ms - 50.69ms | - | faster ✔ 2% - 2% 1.10ms - 1.19ms |
users/eisenbergeffect/behavior-revision | 51.78ms - 51.86ms | slower ❌ 2% - 2% 1.10ms - 1.19ms | - |
repeat-nested-unshift-loopCount=200&itemCount=200&addCount=1
- Browser: chrome-headless 104.0.5112.101
- Sample size: 50
- Built by: Validate Benchmarks #215
-
Commit: b6426f8
clickTrigger10x
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 4269.63ms - 4328.20ms | - | faster ✔ 1% - 3% 27.72ms - 110.31ms |
users/eisenbergeffect/behavior-revision | 4338.82ms - 4397.04ms | slower ❌ 1% - 3% 27.72ms - 110.31ms | - |
usedJSHeapSize
Version | Avg time | vs master | vs users/eisenbergeffect/behavior-revision |
---|---|---|---|
master | 91.46ms - 91.48ms | - | faster ✔ 17% - 17% 18.61ms - 18.64ms |
users/eisenbergeffect/behavior-revision | 110.08ms - 110.11ms | slower ❌ 20% - 20% 18.61ms - 18.64ms | - |
Ignore the ready to review thing. I accidentally fat fingered a button while scrolling on mobile.
Ok, this one is ready for review.
Preliminary Krausest tests seem to show this as an improvement. I need to try a few more things to be sure though.