PNG Codec Benchmarks
A from-scratch PNG codec in Rust β blazediff-png β against spngΒ , image-rs (png), and zune-pngΒ . Decode and encode are timed (best-of, size-scaled iteration counts) over the full fixture corpus (36 PNGs, 342.8 MPx), single-threaded on Apple Silicon. Lower is better.
Encode is measured at two settings so the speed/size trade-off is explicit and zuneβs stored-only encoder is compared fairly: no compression (stored deflate blocks) and half compression (half of each codecβs own max deflate level β libdeflate 12 β 6, zlib 9 β 4).
Speed here, correctness elsewhere. These are timing numbers. Byte-identical decode parity with spng is verified separately on a large public-image corpus β Urban100, BSD100, Set14, Set5 (real high-res photos) plus the full PngSuiteΒ (every format corner and the intentionally-malformed files), ~395 files β by the corpus_differential test: every file decodes byte-identically to spng at RGBA8 and at every SPNG_FMT_*, malformed files reject in lockstep, and every accepted image survives a blazediff encode β decode round-trip. Fetch the corpus with crates/blazediff-png/scripts/fetch-corpus.sh and run with BLAZEDIFF_PNG_CORPUS set; the Benchmark PNG GitHub workflow runs the benchmark and this verification.

Decode
blazediff decodes ~1.39Γ faster than spng across the corpus.
| Benchmark | MPx | blazediff | spng | image-rs | zune | BlazeDiff vs spng |
|---|---|---|---|---|---|---|
| 4k/1a.png | 17.9 | 134.36ms | 173.00ms | 148.31ms | 200.29ms | 22.3% |
| 4k/1b.png | 17.9 | 122.79ms | 161.47ms | 143.69ms | 189.08ms | 24.0% |
| 4k/2a.png | 20.0 | 154.98ms | 212.88ms | 199.04ms | 233.36ms | 27.2% |
| 4k/2b.png | 20.0 | 159.96ms | 221.32ms | 197.15ms | 231.84ms | 27.7% |
| 4k/3a.png | 24.0 | 160.13ms | 220.40ms | 195.15ms | 262.18ms | 27.3% |
| 4k/3b.png | 24.0 | 161.35ms | 222.93ms | 194.20ms | 261.72ms | 27.6% |
| alpha/1a.png | 0.0 | 0.08ms | 0.19ms | 0.08ms | 0.11ms | 58.0% |
| alpha/1b.png | 0.0 | 0.09ms | 0.20ms | 0.08ms | 0.11ms | 57.1% |
| blazediff/1a.png | 0.4 | 0.61ms | 0.68ms | 0.75ms | 1.02ms | 11.2% |
| blazediff/1b.png | 0.4 | 0.61ms | 0.68ms | 0.73ms | 1.03ms | 10.4% |
| blazediff/2a.png | 0.4 | 0.60ms | 0.80ms | 0.71ms | 0.91ms | 24.5% |
| blazediff/2b.png | 0.4 | 0.64ms | 0.86ms | 0.78ms | 1.02ms | 25.5% |
| blazediff/3a.png | 1.6 | 10.73ms | 13.02ms | 12.85ms | 17.09ms | 17.6% |
| blazediff/3b.png | 1.6 | 10.68ms | 12.97ms | 12.80ms | 17.44ms | 17.6% |
| blazediff/4a.png | 3.8 | 2.78ms | 3.40ms | 3.44ms | 4.38ms | 18.4% |
| blazediff/4b.png | 3.8 | 2.80ms | 3.44ms | 3.50ms | 4.48ms | 18.5% |
| page/1a.png | 58.9 | 155.34ms | 234.00ms | 182.39ms | 243.58ms | 33.6% |
| page/1b.png | 58.9 | 164.35ms | 250.52ms | 182.81ms | 243.28ms | 34.4% |
| page/2a.png | 41.7 | 26.18ms | 35.93ms | 20.86ms | 61.65ms | 27.1% |
| page/2b.png | 41.7 | 26.16ms | 36.34ms | 20.84ms | 63.65ms | 28.0% |
| pixelmatch/1a.png | 0.1 | 0.69ms | 0.92ms | 0.72ms | 1.05ms | 25.7% |
| pixelmatch/1b.png | 0.1 | 0.53ms | 0.71ms | 0.59ms | 0.88ms | 24.7% |
| pixelmatch/2a.png | 0.1 | 0.10ms | 0.36ms | 0.12ms | 0.15ms | 70.8% |
| pixelmatch/2b.png | 0.1 | 0.11ms | 0.37ms | 0.12ms | 0.16ms | 71.1% |
| pixelmatch/3a.png | 0.1 | 0.48ms | 0.71ms | 0.51ms | 0.74ms | 32.2% |
| pixelmatch/3b.png | 0.1 | 0.49ms | 0.72ms | 0.50ms | 0.73ms | 32.0% |
| pixelmatch/4a.png | 0.2 | 1.07ms | 1.83ms | 1.34ms | 1.74ms | 41.6% |
| pixelmatch/4b.png | 0.2 | 1.29ms | 1.74ms | 1.38ms | 2.19ms | 26.0% |
| pixelmatch/5a.png | 0.1 | 0.29ms | 0.43ms | 0.28ms | 0.37ms | 32.5% |
| pixelmatch/5b.png | 0.1 | 0.29ms | 0.43ms | 0.26ms | 0.36ms | 31.8% |
| pixelmatch/6a.png | 0.1 | 0.34ms | 0.64ms | 0.38ms | 0.46ms | 46.5% |
| pixelmatch/6b.png | 0.1 | 0.58ms | 0.93ms | 0.53ms | 0.83ms | 37.7% |
| pixelmatch/7a.png | 0.3 | 0.18ms | 0.45ms | 0.18ms | 0.31ms | 60.8% |
| pixelmatch/7b.png | 0.3 | 0.19ms | 0.46ms | 0.19ms | 0.31ms | 59.9% |
| same/1a.png | 1.7 | 2.07ms | 2.49ms | 2.62ms | 9.07ms | 16.8% |
| same/1b.png | 1.7 | 2.06ms | 2.54ms | 2.62ms | 9.00ms | 19.0% |
| TOTAL | 1305.96ms | 1820.76ms | 1532.50ms | 2066.58ms | 28.3% |
Encode β No Compression
Levels: blazediff stored Β· spng stored Β· image-rs stored Β· zune stored.
blazediff encodes ~6.67Γ faster than spng (stored) across the corpus.
| Benchmark | MPx | blazediff | spng | image-rs | zune | BlazeDiff vs spng |
|---|---|---|---|---|---|---|
| 4k/1a.png | 17.9 | 4.38ms | 30.75ms | 33.80ms | 52.86ms | 85.8% |
| 4k/1b.png | 17.9 | 4.15ms | 30.26ms | 41.81ms | 52.47ms | 86.3% |
| 4k/2a.png | 20.0 | 4.71ms | 36.80ms | 24.80ms | 57.09ms | 87.2% |
| 4k/2b.png | 20.0 | 4.76ms | 34.96ms | 21.76ms | 61.17ms | 86.4% |
| 4k/3a.png | 24.0 | 5.59ms | 32.82ms | 36.08ms | 76.48ms | 83.0% |
| 4k/3b.png | 24.0 | 6.33ms | 62.41ms | 33.59ms | 85.75ms | 89.9% |
| alpha/1a.png | 0.0 | 0.01ms | 0.04ms | 0.04ms | 0.10ms | 78.3% |
| alpha/1b.png | 0.0 | 0.01ms | 0.04ms | 0.04ms | 0.10ms | 78.5% |
| blazediff/1a.png | 0.4 | 0.10ms | 0.43ms | 0.39ms | 1.17ms | 77.1% |
| blazediff/1b.png | 0.4 | 0.10ms | 0.44ms | 0.40ms | 1.16ms | 77.8% |
| blazediff/2a.png | 0.4 | 0.08ms | 0.36ms | 0.32ms | 0.96ms | 76.8% |
| blazediff/2b.png | 0.4 | 0.08ms | 0.36ms | 0.31ms | 0.94ms | 76.7% |
| blazediff/3a.png | 1.6 | 0.36ms | 2.68ms | 3.30ms | 5.34ms | 86.6% |
| blazediff/3b.png | 1.6 | 0.36ms | 2.52ms | 3.35ms | 5.08ms | 85.7% |
| blazediff/4a.png | 3.8 | 0.86ms | 5.76ms | 6.97ms | 13.18ms | 85.1% |
| blazediff/4b.png | 3.8 | 0.86ms | 5.02ms | 8.92ms | 12.28ms | 82.9% |
| page/1a.png | 58.9 | 16.47ms | 112.69ms | 134.00ms | 189.20ms | 85.4% |
| page/1b.png | 58.9 | 22.86ms | 128.56ms | 99.90ms | 167.92ms | 82.2% |
| page/2a.png | 41.7 | 11.99ms | 89.17ms | 114.14ms | 142.19ms | 86.6% |
| page/2b.png | 41.7 | 12.03ms | 65.43ms | 48.64ms | 126.12ms | 81.6% |
| pixelmatch/1a.png | 0.1 | 0.03ms | 0.15ms | 0.10ms | 0.34ms | 80.2% |
| pixelmatch/1b.png | 0.1 | 0.03ms | 0.13ms | 0.10ms | 0.34ms | 77.6% |
| pixelmatch/2a.png | 0.1 | 0.01ms | 0.07ms | 0.05ms | 0.17ms | 78.3% |
| pixelmatch/2b.png | 0.1 | 0.01ms | 0.07ms | 0.05ms | 0.17ms | 78.8% |
| pixelmatch/3a.png | 0.1 | 0.03ms | 0.15ms | 0.10ms | 0.34ms | 81.0% |
| pixelmatch/3b.png | 0.1 | 0.03ms | 0.15ms | 0.10ms | 0.33ms | 80.3% |
| pixelmatch/4a.png | 0.2 | 0.04ms | 0.21ms | 0.15ms | 0.47ms | 78.9% |
| pixelmatch/4b.png | 0.2 | 0.04ms | 0.18ms | 0.17ms | 0.47ms | 76.3% |
| pixelmatch/5a.png | 0.1 | 0.01ms | 0.07ms | 0.05ms | 0.17ms | 78.5% |
| pixelmatch/5b.png | 0.1 | 0.01ms | 0.08ms | 0.05ms | 0.17ms | 81.3% |
| pixelmatch/6a.png | 0.1 | 0.01ms | 0.07ms | 0.05ms | 0.17ms | 78.7% |
| pixelmatch/6b.png | 0.1 | 0.01ms | 0.07ms | 0.05ms | 0.17ms | 78.5% |
| pixelmatch/7a.png | 0.3 | 0.06ms | 0.24ms | 0.21ms | 0.65ms | 75.8% |
| pixelmatch/7b.png | 0.3 | 0.06ms | 0.24ms | 0.23ms | 0.65ms | 75.4% |
| same/1a.png | 1.7 | 0.39ms | 2.82ms | 4.00ms | 5.33ms | 86.1% |
| same/1b.png | 1.7 | 0.39ms | 2.81ms | 4.20ms | 5.34ms | 86.1% |
| TOTAL | 97.28ms | 648.97ms | 622.25ms | 1066.82ms | 85.0% |
Encode Size β No Compression
Output bytes per codec; the final row is each codecβs total as a percentage of spngβs (the de-facto reference). zune-png has no compressed mode, so it always writes stored output β far larger than the rest.
| Benchmark | blazediff | spng | image-rs | zune |
|---|---|---|---|---|
| 4k/1a.png | 70008.5 KB | 70113.9 KB | 70008.5 KB | 70111.1 KB |
| 4k/1b.png | 70008.5 KB | 70113.9 KB | 70008.5 KB | 70111.1 KB |
| 4k/2a.png | 77985.6 KB | 78102.8 KB | 77985.6 KB | 78099.8 KB |
| 4k/2b.png | 77985.6 KB | 78102.8 KB | 77985.6 KB | 78099.8 KB |
| 4k/3a.png | 93761.1 KB | 93901.8 KB | 93761.1 KB | 93898.5 KB |
| 4k/3b.png | 93761.1 KB | 93901.8 KB | 93761.1 KB | 93898.5 KB |
| alpha/1a.png | 144.3 KB | 144.5 KB | 144.3 KB | 144.5 KB |
| alpha/1b.png | 144.3 KB | 144.5 KB | 144.3 KB | 144.5 KB |
| blazediff/1a.png | 1686.4 KB | 1689.0 KB | 1686.4 KB | 1688.8 KB |
| blazediff/1b.png | 1686.4 KB | 1689.0 KB | 1686.4 KB | 1688.8 KB |
| blazediff/2a.png | 1372.2 KB | 1374.3 KB | 1372.2 KB | 1374.2 KB |
| blazediff/2b.png | 1372.2 KB | 1374.3 KB | 1372.2 KB | 1374.2 KB |
| blazediff/3a.png | 6372.0 KB | 6381.7 KB | 6372.0 KB | 6381.3 KB |
| blazediff/3b.png | 6372.0 KB | 6381.7 KB | 6372.0 KB | 6381.3 KB |
| blazediff/4a.png | 14792.1 KB | 14814.7 KB | 14792.1 KB | 14813.8 KB |
| blazediff/4b.png | 14792.1 KB | 14814.7 KB | 14792.1 KB | 14813.8 KB |
| page/1a.png | 230305.6 KB | 230653.1 KB | 230305.6 KB | 230643.0 KB |
| page/1b.png | 230305.6 KB | 230653.1 KB | 230305.6 KB | 230643.0 KB |
| page/2a.png | 162963.6 KB | 163212.5 KB | 162963.6 KB | 163202.3 KB |
| page/2b.png | 162963.6 KB | 163212.5 KB | 162963.6 KB | 163202.3 KB |
| pixelmatch/1a.png | 512.4 KB | 513.1 KB | 512.4 KB | 513.1 KB |
| pixelmatch/1b.png | 512.4 KB | 513.1 KB | 512.4 KB | 513.1 KB |
| pixelmatch/2a.png | 256.3 KB | 256.7 KB | 256.3 KB | 256.7 KB |
| pixelmatch/2b.png | 256.3 KB | 256.7 KB | 256.3 KB | 256.7 KB |
| pixelmatch/3a.png | 512.4 KB | 513.1 KB | 512.4 KB | 513.1 KB |
| pixelmatch/3b.png | 512.4 KB | 513.1 KB | 512.4 KB | 513.1 KB |
| pixelmatch/4a.png | 705.4 KB | 706.5 KB | 705.4 KB | 706.5 KB |
| pixelmatch/4b.png | 705.4 KB | 706.5 KB | 705.4 KB | 706.5 KB |
| pixelmatch/5a.png | 256.3 KB | 256.7 KB | 256.3 KB | 256.7 KB |
| pixelmatch/5b.png | 256.3 KB | 256.7 KB | 256.3 KB | 256.7 KB |
| pixelmatch/6a.png | 256.3 KB | 256.7 KB | 256.3 KB | 256.7 KB |
| pixelmatch/6b.png | 256.3 KB | 256.7 KB | 256.3 KB | 256.7 KB |
| pixelmatch/7a.png | 977.2 KB | 978.7 KB | 977.2 KB | 978.6 KB |
| pixelmatch/7b.png | 977.2 KB | 978.7 KB | 977.2 KB | 978.6 KB |
| same/1a.png | 6789.5 KB | 6799.9 KB | 6789.5 KB | 6799.5 KB |
| same/1b.png | 6789.5 KB | 6799.9 KB | 6789.5 KB | 6799.5 KB |
| TOTAL | 1339314.5 KB | 1341339.3 KB | 1339314.5 KB | 1341276.3 KB |
| vs spng | 99.8% | 100.0% | 99.8% | 100.0% |
Encode β Half Compression
Levels: blazediff libdeflate 6 Β· spng zlib 4 Β· image-rs flate2 4 Β· zune stored.
blazediff encodes ~3.75Γ faster than spng (zlib 4) across the corpus.
| Benchmark | MPx | blazediff | spng | image-rs | zune | BlazeDiff vs spng |
|---|---|---|---|---|---|---|
| 4k/1a.png | 17.9 | 1073.90ms | 2817.41ms | 1064.54ms | 52.98ms | 61.9% |
| 4k/1b.png | 17.9 | 922.19ms | 2367.31ms | 960.18ms | 52.68ms | 61.0% |
| 4k/2a.png | 20.0 | 955.14ms | 3291.65ms | 1150.56ms | 58.93ms | 71.0% |
| 4k/2b.png | 20.0 | 1014.24ms | 3021.96ms | 1140.25ms | 60.85ms | 66.4% |
| 4k/3a.png | 24.0 | 1405.76ms | 3780.78ms | 1532.24ms | 78.94ms | 62.8% |
| 4k/3b.png | 24.0 | 1411.98ms | 3830.02ms | 1607.11ms | 86.11ms | 63.1% |
| alpha/1a.png | 0.0 | 0.40ms | 2.74ms | 0.39ms | 0.10ms | 85.4% |
| alpha/1b.png | 0.0 | 0.41ms | 2.79ms | 0.39ms | 0.10ms | 85.4% |
| blazediff/1a.png | 0.4 | 4.32ms | 33.28ms | 2.96ms | 1.17ms | 87.0% |
| blazediff/1b.png | 0.4 | 4.33ms | 33.29ms | 2.98ms | 1.16ms | 87.0% |
| blazediff/2a.png | 0.4 | 3.72ms | 27.26ms | 2.61ms | 0.94ms | 86.4% |
| blazediff/2b.png | 0.4 | 3.77ms | 27.77ms | 2.69ms | 0.94ms | 86.4% |
| blazediff/3a.png | 1.6 | 38.35ms | 155.61ms | 38.61ms | 5.39ms | 75.4% |
| blazediff/3b.png | 1.6 | 37.92ms | 155.14ms | 38.00ms | 5.10ms | 75.6% |
| blazediff/4a.png | 3.8 | 33.90ms | 289.42ms | 20.44ms | 12.88ms | 88.3% |
| blazediff/4b.png | 3.8 | 33.95ms | 287.44ms | 20.45ms | 12.41ms | 88.2% |
| page/1a.png | 58.9 | 866.93ms | 5141.44ms | 767.40ms | 191.19ms | 83.1% |
| page/1b.png | 58.9 | 938.42ms | 5097.02ms | 716.03ms | 172.47ms | 81.6% |
| page/2a.png | 41.7 | 659.72ms | 3653.05ms | 611.90ms | 143.67ms | 81.9% |
| page/2b.png | 41.7 | 665.23ms | 3645.44ms | 615.96ms | 125.99ms | 81.8% |
| pixelmatch/1a.png | 0.1 | 1.75ms | 11.02ms | 1.73ms | 0.33ms | 84.1% |
| pixelmatch/1b.png | 0.1 | 1.79ms | 11.15ms | 1.78ms | 0.34ms | 83.9% |
| pixelmatch/2a.png | 0.1 | 2.46ms | 8.81ms | 3.24ms | 0.17ms | 72.1% |
| pixelmatch/2b.png | 0.1 | 2.48ms | 9.08ms | 3.37ms | 0.17ms | 72.7% |
| pixelmatch/3a.png | 0.1 | 1.51ms | 10.44ms | 1.16ms | 0.35ms | 85.6% |
| pixelmatch/3b.png | 0.1 | 1.48ms | 10.37ms | 1.18ms | 0.33ms | 85.8% |
| pixelmatch/4a.png | 0.2 | 7.07ms | 23.90ms | 8.86ms | 0.47ms | 70.4% |
| pixelmatch/4b.png | 0.2 | 7.17ms | 24.94ms | 9.38ms | 0.47ms | 71.2% |
| pixelmatch/5a.png | 0.1 | 0.68ms | 4.97ms | 0.58ms | 0.17ms | 86.4% |
| pixelmatch/5b.png | 0.1 | 0.69ms | 4.97ms | 0.58ms | 0.17ms | 86.1% |
| pixelmatch/6a.png | 0.1 | 2.12ms | 7.15ms | 2.52ms | 0.17ms | 70.4% |
| pixelmatch/6b.png | 0.1 | 2.05ms | 6.60ms | 2.16ms | 0.17ms | 68.9% |
| pixelmatch/7a.png | 0.3 | 3.99ms | 21.80ms | 4.10ms | 0.65ms | 81.7% |
| pixelmatch/7b.png | 0.3 | 4.06ms | 21.63ms | 4.12ms | 0.65ms | 81.2% |
| same/1a.png | 1.7 | 17.56ms | 134.05ms | 12.33ms | 5.33ms | 86.9% |
| same/1b.png | 1.7 | 17.57ms | 134.28ms | 12.35ms | 5.36ms | 86.9% |
| TOTAL | 10149.01ms | 38105.96ms | 10365.13ms | 1079.30ms | 73.4% |
Encode Size β Half Compression
Output bytes per codec; the final row is each codecβs total as a percentage of spngβs (the de-facto reference). zune-png has no compressed mode, so it always writes stored output β far larger than the rest.
| Benchmark | blazediff | spng | image-rs | zune |
|---|---|---|---|---|
| 4k/1a.png | 21101.4 KB | 21854.4 KB | 22052.3 KB | 70111.1 KB |
| 4k/1b.png | 17651.2 KB | 18677.4 KB | 18347.8 KB | 70111.1 KB |
| 4k/2a.png | 26682.0 KB | 27721.7 KB | 27255.9 KB | 78099.8 KB |
| 4k/2b.png | 27245.4 KB | 28215.9 KB | 27832.4 KB | 78099.8 KB |
| 4k/3a.png | 32854.0 KB | 35811.5 KB | 33914.6 KB | 93898.5 KB |
| 4k/3b.png | 32367.2 KB | 35368.2 KB | 33383.8 KB | 93898.5 KB |
| alpha/1a.png | 2.8 KB | 2.9 KB | 3.0 KB | 144.5 KB |
| alpha/1b.png | 2.8 KB | 3.0 KB | 3.0 KB | 144.5 KB |
| blazediff/1a.png | 30.8 KB | 35.4 KB | 30.2 KB | 1688.8 KB |
| blazediff/1b.png | 30.9 KB | 35.4 KB | 30.3 KB | 1688.8 KB |
| blazediff/2a.png | 31.5 KB | 38.1 KB | 30.1 KB | 1374.2 KB |
| blazediff/2b.png | 32.8 KB | 39.8 KB | 31.5 KB | 1374.2 KB |
| blazediff/3a.png | 815.5 KB | 877.0 KB | 835.0 KB | 6381.3 KB |
| blazediff/3b.png | 792.2 KB | 853.3 KB | 812.1 KB | 6381.3 KB |
| blazediff/4a.png | 98.7 KB | 114.0 KB | 100.5 KB | 14813.8 KB |
| blazediff/4b.png | 98.3 KB | 114.1 KB | 100.4 KB | 14813.8 KB |
| page/1a.png | 11324.3 KB | 12237.3 KB | 11321.4 KB | 230643.0 KB |
| page/1b.png | 11315.0 KB | 12227.2 KB | 11313.6 KB | 230643.0 KB |
| page/2a.png | 10595.2 KB | 11285.2 KB | 10674.2 KB | 163202.3 KB |
| page/2b.png | 10614.5 KB | 11291.1 KB | 10702.0 KB | 163202.3 KB |
| pixelmatch/1a.png | 31.8 KB | 32.2 KB | 33.4 KB | 513.1 KB |
| pixelmatch/1b.png | 31.9 KB | 32.2 KB | 33.4 KB | 513.1 KB |
| pixelmatch/2a.png | 90.8 KB | 96.9 KB | 91.0 KB | 256.7 KB |
| pixelmatch/2b.png | 94.4 KB | 99.9 KB | 94.3 KB | 256.7 KB |
| pixelmatch/3a.png | 13.9 KB | 14.7 KB | 13.8 KB | 513.1 KB |
| pixelmatch/3b.png | 13.7 KB | 14.3 KB | 13.5 KB | 513.1 KB |
| pixelmatch/4a.png | 240.1 KB | 254.1 KB | 241.3 KB | 706.5 KB |
| pixelmatch/4b.png | 251.0 KB | 268.1 KB | 251.9 KB | 706.5 KB |
| pixelmatch/5a.png | 3.0 KB | 3.3 KB | 3.1 KB | 256.7 KB |
| pixelmatch/5b.png | 3.2 KB | 3.3 KB | 3.2 KB | 256.7 KB |
| pixelmatch/6a.png | 44.4 KB | 50.7 KB | 48.5 KB | 256.7 KB |
| pixelmatch/6b.png | 32.0 KB | 37.9 KB | 36.5 KB | 256.7 KB |
| pixelmatch/7a.png | 88.2 KB | 96.1 KB | 87.4 KB | 978.6 KB |
| pixelmatch/7b.png | 87.3 KB | 94.8 KB | 86.5 KB | 978.6 KB |
| same/1a.png | 124.9 KB | 140.3 KB | 126.7 KB | 6799.5 KB |
| same/1b.png | 124.9 KB | 140.3 KB | 126.7 KB | 6799.5 KB |
| TOTAL | 204962.2 KB | 218181.8 KB | 210065.0 KB | 1341276.3 KB |
| vs spng | 93.9% | 100.0% | 96.3% | 614.8% |