Browser run: 2026-11-03T02:16:59.033Z; Chrome/148.0.7778.215. Host: Linux x86_64. Two images side by side: <=20 KiB preview plus differential WebSocket stream versus PNG HTTP after explicit Start, unrestricted loopback transport; one 4K and two approximately 2 MiB presets. Times are observed wall milliseconds, including other activity on this workstation.
The 4K preset is a generated 1672 × 941 image upscaled with user-approved Lanczos resampling. The two small presets are resized from the same generated source set to fit a 2 MiB lossless PNG budget. There is no padding. The standard PNG and decoded stream are pixel-identical for every preset.
| Subject | Preview bytes | Preview dimensions | Correction bytes | Preview + correction bytes | PNG bytes | Preview visible ms | iiStream complete ms | PNG HTTP complete ms |
|---|---|---|---|---|---|---|---|---|
| Architecture | 20,213 | 251 × 141 | 13,102,241 | 13,122,454 | 12,338,456 | 20 | 799 | 509 |
| Landscape | 20,276 | 273 × 153 | 2,184,124 | 2,204,400 | 2,096,763 | 11 | 143 | 15 |
| Portrait | 20,411 | 267 × 150 | 2,214,304 | 2,234,715 | 2,095,525 | 12 | 149 | 14 |
PNG first visible and internal decode CPU time are unavailable through the native image interface. They are not inferred from network start or full completion. Decoder wall time includes asynchronous decompression scheduling. Offline encoding time is excluded from both transfer tests. The browser test verifies no-store headers, binary WebSocket traffic and Reset during a separate throttled run.
| Subject | 1 KiB | 20 KiB | 100 KiB | 250 KiB | 2 MiB | 5 MiB |
|---|---|---|---|---|---|---|
| Architecture | 17.65 | 17.65 | 17.71 | 17.81 | 18.95 | 21.21 |
| Landscape | 21.49 | 21.55 | 21.55 | 22.10 | 37.96 | lossless |
| Portrait | 25.13 | 25.13 | 25.63 | 26.34 | 39.49 | lossless |
PSNR is computed on the full-resolution seeded RGB buffer after the last complete correction frame within the stream-byte budget; this table excludes the preview transfer. The UI image snapshots instead use combined preview-plus-stream budgets. The independent Python reference reconstruction checks every reported checkpoint to six decimal places. All streams finish losslessly. Six visual snapshots use 768 × 432 downsampling for display.
The real resized PNG preview is displayed before the correction stream begins. The stream contains only initialization, correction data and completion; it does not retransmit coarse fills or quadtree splits. Corrections use reversible Sub/Paeth filtering and a bounded synchronous inflater. Uncorrected canvas regions remain transparent above the preview. End-to-end timings include preview loading, eight growing WebSocket messages, reconstruction, image capture and browser contention. Payload totals include the preview. This is a whole-pipeline comparison, not a standalone transport benchmark. Independent runs remain available.
.venv/bin/python demo/prepare.py
node demo/build.mjs
.venv/bin/python demo/server.py
node tests/run.mjs
node tests/browser.mjs
.venv/bin/python demo/benchmark.pyThe server command stays running in a separate terminal. Tests and report commands run from the repository root. The browser report and screenshot are overwritten by each benchmark run.