bench: JSPI vs asyncify A/B — harness + results
Adds pcbnew-large-perf.spec.ts (PERF_LARGE-gated: repeated cold loads, vme-wren/jetson opens, rAF + distinct-glcanvas-frame FPS under throttle, wasm/JS heap checkpoints), fetchIntoMemfs + openAndWait/sampleMemory/ measureFpsDetailed perf-utils, dual 9.99+10.0 config seeding in pcbnew.html so foreign-branch builds boot wizard-free, and the full benchmark report + raw data under docs/features/async/migration-evidence/. Headlines: wasm 94 vs 113 MB raw (18.6 vs 36.7 MB gzip), post-link tail 1.6 s/49 MB vs 63 s/6.1 GB per build, cold load −40 %, 27.7 MB board open −45 %, real redraws +68 % at 4× throttle, boot heap −31 %. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016X9eh1s5sTx1o9Em9KBuwR
This commit is contained in:
parent
9c475a804e
commit
da299ed6f9
12 changed files with 707 additions and 11 deletions
|
|
@ -0,0 +1,6 @@
|
|||
A-S1a,175,0,19584995328
|
||||
A-S1b,427,0,22525415424
|
||||
A-S2a,165,0,21735530496
|
||||
A-S2b,248,0,23429591040
|
||||
A-compileonly,91,0,23662247936
|
||||
A-S3,819,0,23760617472
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
B-S1a,379,0,20131172352
|
||||
B-S1b,154,0,20515237888
|
||||
B-S2a,122,0,20695916544
|
||||
B-S2b,95,0,20612022272
|
||||
B-S3,26,2,4479885312
|
||||
B-S3,305,0,20694478848
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
"jspi": {
|
||||
"kicad_editor.wasm": {
|
||||
"raw": 98664038,
|
||||
"gzip": 19469712,
|
||||
"brotli": 14173019
|
||||
},
|
||||
"kicad_editor.js": {
|
||||
"raw": 474692,
|
||||
"gzip": 116955,
|
||||
"brotli": 106125
|
||||
},
|
||||
"wx.js": {
|
||||
"raw": 74281,
|
||||
"gzip": 17356,
|
||||
"brotli": 16439
|
||||
},
|
||||
"wx-dom.js": {
|
||||
"raw": 63269,
|
||||
"gzip": 16857,
|
||||
"brotli": 15848
|
||||
},
|
||||
"images.tar.gz": {
|
||||
"raw": 5370904,
|
||||
"gzip": 5372562,
|
||||
"brotli": 5114985
|
||||
},
|
||||
"TOTAL": {
|
||||
"raw": 104647184,
|
||||
"gzip": 24993442,
|
||||
"brotli": 19426416
|
||||
}
|
||||
},
|
||||
"asyncify": {
|
||||
"kicad_editor.wasm": {
|
||||
"raw": 118557371,
|
||||
"gzip": 38473650,
|
||||
"brotli": 25666194
|
||||
},
|
||||
"kicad_editor.js": {
|
||||
"raw": 472325,
|
||||
"gzip": 116872,
|
||||
"brotli": 105662
|
||||
},
|
||||
"wx.js": {
|
||||
"raw": 74281,
|
||||
"gzip": 17356,
|
||||
"brotli": 16439
|
||||
},
|
||||
"wx-dom.js": {
|
||||
"raw": 63041,
|
||||
"gzip": 16773,
|
||||
"brotli": 15765
|
||||
},
|
||||
"images.tar.gz": {
|
||||
"raw": 5370145,
|
||||
"gzip": 5371803,
|
||||
"brotli": 5160999
|
||||
},
|
||||
"TOTAL": {
|
||||
"raw": 124537163,
|
||||
"gzip": 43996454,
|
||||
"brotli": 30965059
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:46:53.665Z","section":"load","run":1,"loadMs":2629,"wasmFetch":{"durationMs":1053,"transferSize":32139352},"bootMem":{"wasmHeapBytes":556793856,"jsHeapBytes":27600000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:46:56.364Z","section":"load","run":2,"loadMs":2610,"wasmFetch":{"durationMs":961,"transferSize":32139352},"bootMem":{"wasmHeapBytes":556793856,"jsHeapBytes":27600000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:46:59.036Z","section":"load","run":3,"loadMs":2576,"wasmFetch":{"durationMs":989,"transferSize":32139352},"bootMem":{"wasmHeapBytes":556793856,"jsHeapBytes":27600000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:47:01.667Z","section":"load","run":4,"loadMs":2526,"wasmFetch":{"durationMs":987,"transferSize":32139352},"bootMem":{"wasmHeapBytes":556793856,"jsHeapBytes":27600000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:47:04.272Z","section":"load","run":5,"loadMs":2521,"wasmFetch":{"durationMs":997,"transferSize":32139352},"bootMem":{"wasmHeapBytes":556793856,"jsHeapBytes":27600000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:47:06.873Z","section":"load-cdp-sanity","loadMs":2514}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:47:09.937Z","section":"open-demo","run":1,"openMs":467,"postOpenMem":{"wasmHeapBytes":556793856,"jsHeapBytes":33100000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:47:12.982Z","section":"open-demo","run":2,"openMs":468,"postOpenMem":{"wasmHeapBytes":556793856,"jsHeapBytes":33100000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:47:16.025Z","section":"open-demo","run":3,"openMs":467,"postOpenMem":{"wasmHeapBytes":556793856,"jsHeapBytes":33100000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:47:25.126Z","section":"open-vme","run":1,"bytes":29032252,"openMs":6465,"openPeakHeap":962330624,"postOpenMem":{"wasmHeapBytes":962330624,"jsHeapBytes":56800000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:47:34.418Z","section":"open-vme","run":2,"bytes":29032252,"openMs":6582,"openPeakHeap":962330624,"postOpenMem":{"wasmHeapBytes":962330624,"jsHeapBytes":56800000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:47:43.512Z","section":"open-vme","run":3,"bytes":29032252,"openMs":6398,"openPeakHeap":1182793728,"postOpenMem":{"wasmHeapBytes":1182793728,"jsHeapBytes":56800000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:47:58.746Z","section":"fps-vme","throttle":1,"rep":1,"rafFps":44.5,"distinctFps":7.8}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:48:04.925Z","section":"fps-vme","throttle":1,"rep":2,"rafFps":49.1,"distinctFps":7.8}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:48:10.980Z","section":"fps-vme","throttle":4,"rep":1,"rafFps":32.4,"distinctFps":3}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:48:17.030Z","section":"fps-vme","throttle":4,"rep":2,"rafFps":37.6,"distinctFps":3.1}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:48:23.361Z","section":"fps-vme","throttle":6,"rep":1,"rafFps":39.9,"distinctFps":4.1}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:48:29.439Z","section":"fps-vme","throttle":6,"rep":2,"rafFps":34.3,"distinctFps":2.8}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:48:29.442Z","section":"fps-vme-postmem","postFpsMem":{"wasmHeapBytes":962330624,"jsHeapBytes":60300000}}
|
||||
{"arm":"asyncify","sha256":"6dab493196d060d7","when":"2026-08-14T09:48:46.855Z","section":"open-jetson","bytes":84806775,"outcome":"loaded","openMs":14584,"openPeakHeap":1904214016,"postOpenMem":{"wasmHeapBytes":1904214016,"jsHeapBytes":116000000}}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:04.217Z","section":"load","run":1,"loadMs":1841,"wasmFetch":{"durationMs":692,"transferSize":17051037},"bootMem":{"wasmHeapBytes":386662400,"jsHeapBytes":27600000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:05.422Z","section":"load","run":2,"loadMs":1117,"wasmFetch":{"durationMs":554,"transferSize":17051037},"bootMem":{"wasmHeapBytes":268435456,"jsHeapBytes":29400000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:07.469Z","section":"load","run":3,"loadMs":1547,"wasmFetch":{"durationMs":573,"transferSize":17051037},"bootMem":{"wasmHeapBytes":386662400,"jsHeapBytes":27600000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:09.081Z","section":"load","run":4,"loadMs":1123,"wasmFetch":{"durationMs":574,"transferSize":17051037},"bootMem":{"wasmHeapBytes":386662400,"jsHeapBytes":24500000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:10.697Z","section":"load","run":5,"loadMs":1538,"wasmFetch":{"durationMs":571,"transferSize":17051037},"bootMem":{"wasmHeapBytes":386662400,"jsHeapBytes":26000000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:11.887Z","section":"load-cdp-sanity","loadMs":1117}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:14.226Z","section":"open-demo","run":1,"openMs":698,"postOpenMem":{"wasmHeapBytes":386662400,"jsHeapBytes":31200000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:16.208Z","section":"open-demo","run":2,"openMs":693,"postOpenMem":{"wasmHeapBytes":386662400,"jsHeapBytes":31200000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:18.164Z","section":"open-demo","run":3,"openMs":358,"postOpenMem":{"wasmHeapBytes":386662400,"jsHeapBytes":31200000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:23.447Z","section":"open-vme","run":1,"bytes":29032252,"openMs":3551,"openPeakHeap":801898496,"postOpenMem":{"wasmHeapBytes":801898496,"jsHeapBytes":56800000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:28.639Z","section":"open-vme","run":2,"bytes":29032252,"openMs":3538,"openPeakHeap":801898496,"postOpenMem":{"wasmHeapBytes":801898496,"jsHeapBytes":60300000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:33.963Z","section":"open-vme","run":3,"bytes":29032252,"openMs":3635,"openPeakHeap":801898496,"postOpenMem":{"wasmHeapBytes":801898496,"jsHeapBytes":60300000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:45.276Z","section":"fps-vme","throttle":1,"rep":1,"rafFps":51.6,"distinctFps":1.6,"note":"SUPERSEDED - sampler watched #canvas, not glcanvas"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:51.293Z","section":"fps-vme","throttle":1,"rep":2,"rafFps":53,"distinctFps":1.8,"note":"SUPERSEDED - sampler watched #canvas, not glcanvas"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:43:57.442Z","section":"fps-vme","throttle":4,"rep":1,"rafFps":36,"distinctFps":0.7,"note":"SUPERSEDED - sampler watched #canvas, not glcanvas"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:44:03.520Z","section":"fps-vme","throttle":4,"rep":2,"rafFps":36.2,"distinctFps":0,"note":"SUPERSEDED - sampler watched #canvas, not glcanvas"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:44:09.587Z","section":"fps-vme","throttle":6,"rep":1,"rafFps":33,"distinctFps":0,"note":"SUPERSEDED - sampler watched #canvas, not glcanvas"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:44:16.055Z","section":"fps-vme","throttle":6,"rep":2,"rafFps":33.7,"distinctFps":0,"note":"SUPERSEDED - sampler watched #canvas, not glcanvas"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:44:16.057Z","section":"fps-vme-postmem","postFpsMem":{"wasmHeapBytes":801898496,"jsHeapBytes":60300000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:44:26.524Z","section":"open-jetson","bytes":84806775,"outcome":"loaded","openMs":8620,"openPeakHeap":1730805760,"postOpenMem":{"wasmHeapBytes":1730805760,"jsHeapBytes":116000000}}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:52:00.000Z","section":"fps-vme","throttle":1,"rep":1,"rafFps":51.9,"distinctFps":9.6,"note":"glcanvas sampler re-run; when approximate (row reconstructed from run log after test-results wipe)"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:52:06.000Z","section":"fps-vme","throttle":1,"rep":2,"rafFps":55.7,"distinctFps":9.2,"note":"glcanvas sampler re-run; when approximate"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:52:12.000Z","section":"fps-vme","throttle":4,"rep":1,"rafFps":39.2,"distinctFps":5.1,"note":"glcanvas sampler re-run; when approximate"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:52:18.000Z","section":"fps-vme","throttle":4,"rep":2,"rafFps":41.4,"distinctFps":5.2,"note":"glcanvas sampler re-run; when approximate"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:52:24.000Z","section":"fps-vme","throttle":6,"rep":1,"rafFps":34.3,"distinctFps":3.3,"note":"glcanvas sampler re-run; when approximate"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:52:30.000Z","section":"fps-vme","throttle":6,"rep":2,"rafFps":41.8,"distinctFps":5.3,"note":"glcanvas sampler re-run; when approximate"}
|
||||
{"arm":"jspi","sha256":"6f03e62d6d5619c3","when":"2026-08-14T09:52:30.100Z","section":"fps-vme-postmem","postFpsMem":{"wasmHeapBytes":801898496,"jsHeapBytes":64000000}}
|
||||
Loading…
Reference in a new issue