Honest numbers from synthetic fixtures on Apple M4 Pro. No cherry-picking.
| Engine | Avg (ms) | Algorithm | |
|---|---|---|---|
| ascii | 15 | Bitmap font, zero deps | |
| halftone | 28 | Mono or CMYK rosette dots | |
| dither | 34 | Floyd-Steinberg / Atkinson / Bayer | |
| stipple | 40 | Jittered tone dots | |
| xdog | 54 | XDoG edge detection | |
| lowpoly | 146 | Edge-weighted Delaunay triangulation | |
| pointillism | 181 | Seurat-style colored dots | |
| crosshatch | 220 | Multi-angle tonal engraving | |
| posterize | 290 | Color quantization + DoG ink | |
| watercolor | 378 | Bilateral + pooling + granulation | |
| fdog | 385 | Flow-based DoG, coherent lines | |
| kuwahara | 405 | Anisotropic Kuwahara filter | |
| pencil | 493 | Lu 2012 pencil sketch | |
| cartoon | 513 | Abstraction + cel-shade + XDoG |
These numbers are averages across 3 synthetic fixtures (portrait 768×1024, landscape 1024×640, detail 800×800). Warmup runs excluded.
bun run bench.ts