Encoding Statistics
Warning: this page is quite out of date now.
As part of encoding improvements (mostly in #419), we have collected encoding performance statistics for 4 still test pictures using the current crop of codec code (pre-release version 0.13).
These encodings are also used when a video encoding is selected as primary encoding, this is done to optimize bandwidth and CPU usage: video encodings require a full frame every time, so we use still picture encodings for smaller regions and for automatic lossless refresh.
Mode | Desktop 2560x1600 | Browser 1920x1080 | Diagram 640x800 | Small Alpha 64x48 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Encoding | Compressor | Preset | Quality | Speed | MPixels/s | comp | MPixels/s | comp | MPixels/s | comp | MPixels/s | comp |
png | PIL (old) | optimized | 0 | 1.6 | 8.1 | |||||||
png | PIL (old) | 100 | 6.5 | 8.5 | ||||||||
png | PIL | 100 | 11.6 | 10.0 | 16.1 | 3.1 | 14.6 | 5.0 | 6.0 | 30.1 | ||
png/P | PIL | 100 | 21.8 | 4.7 | 17.2 | 9.0 | 23.9 | 3.9 | 2.2 | 14.0 | ||
png/L | PIL | 100 | 24.3 | 3.8 | 31.1 | 1.4 | 29.7 | 2.6 | 7.6 | 4.7 | ||
webp | PIL | 0 | 5.5 | 0.5 | 6.3 | 0.5 | 5.9 | 0.7 | 0.4 | 13.4 | ||
webp | PIL | 50 | 5.1 | 2.1 | 6.0 | 1.1 | 5.6 | 1.6 | 0.4 | 16.7 | ||
webp | PIL | 100 | 4.3 | 6.2 | 5.9 | 3.1 | 5.3 | 4.3 | 0.4 | 28.8 | ||
jpeg | PIL | optimized | 0 | 71.0 | 0.5 | 68.5 | 0.4 | 80.6 | 0.5 | 16.6 | 3.2 | |
jpeg | PIL | 50 | 86.0 | 3.1 | 68.1 | 1.9 | 68.2 | 2.5 | 12.7 | 8.8 | ||
jpeg | PIL | optimized | 100 | 48.0 | 10.8 | 56.8 | 5.7 | 56.0 | 7.7 | 9.5 | 26.1 | |
jpeg | PIL | 100 | 72.0 | 13.0 | 58.4 | 5.7 | 56.5 | 7.7 | 8.4 | 26.1 | ||
rgb | lz4 | 100 | 224.0 | 15.0 | 497.0 | 4.3 | 526.0 | 6.9 | 76.7 | 56.0 | ||
rgb | zlib | 50 | 21.0 | 9.1 | 30.2 | 2.5 | 27.8 | 3.1 | 11.3 | 39.4 | ||
webp | python-webm | 0 | 6.0 | 0.8 | 6.7 | 0.5 | 6.2 | 0.7 | 0.5 | 13.4 | ||
webp | python-webm | 50 | 5.3 | 2.1 | 6.5 | 1.1 | 5.7 | 1.6 | 0.6 | 16.7 | ||
webp | python-webm | 100 | 0.3 | 4.8 | 1.0 | 0.7 | 0.7 | 1.6 | 0.1 | 25.0 | ||
webp | Cython | TEXT | 0 | 100 | 18.6 | 0.6 | 19.4 | 0.4 | 18.9 | 0.6 | 1.5 | 2.9 |
webp | Cython | TEXT | 50 | 100 | 15.5 | 2.7 | 17.7 | 1.5 | 16.6 | 2.2 | 1.2 | 11.9 |
webp | Cython | TEXT | 99 | 100 | 12.6 | 6.7 | 15.2 | 3.3 | 13.9 | 4.6 | 0.8 | 29.7 |
webp | Cython | TEXT + lossless | 100 | 0 | 0.1 | 4.9 | 0.6 | 0.7 | 0.3 | 1.6 | 0.0 | 24.7 |
webp | Cython | TEXT + lossless | 100 | 100 | 2.3 | 5.9 | 27.8 | 1.3 | 27.2 | 1.9 | 1.5 | 26.9 |
Notes
- all tests were performed on an AMD FX-8150 (octa-core 3GHz AMD CPU)
- video encodings are not included, and should generally be preferred to the single picture encodings shown here
- this shows both speed in mega pixels per second (higher is better), and compression ratio (lower is better)
- Low quality at low speed doesn't really make much sense, so some values have been omitted
- changing the
webp
preset does not affect speed or output size much, it probably does affect the perceived picture quality (seems best to stick with TEXT to ensure that text remains readable) - The new
webp
encoder seems to perform about the same with speeds >50%, only low speed is really slow, and lossless is unbearably slow (it can take more than 30 seconds to encode a single frame using lossless + low speed!) - quality is not the same for each encoder, some have lossless modes others not, etc..
- for data showing the differences between the various
png
compression types (HUFFMAN_ONLY
,FIXED
,RLE
,FILTERED
,DEFAULT
), see ticket:419#comment:6
You can find a much more detailed analysis (but which is limited to lossy formats in YUV420
colourspace mode...) here: Lossy Compressed Image Formats Study
Last modified 16 months ago
Last modified on 01/12/17 11:41:05