pcbjam/docs/features/async/migration-evidence/bench-data-2026-08/perf-bench-asyncify.ndjson
Viktor Vaczi da299ed6f9 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
2026-08-14 11:53:06 +02:00

20 lines
3.8 KiB
Text

{"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}}