===== Compression Benchmarks ===== Here are how various packers perform on the Pearl for Pigs corpus, as included in [[http://csdb.dk/release/?id=81773|LZWVL]], the file "bin.rar". Note that Bitfire and ByteBoozer 2.0 have nigh identical performance, so only one is visible in this plot. Times for subsizer are preliminary (current at 2017-04-06). {{:base:compression_benchmarks.png}} All file sizes exclusive of unpacker, all times measured in cycles with interrupts disabled and screen blanked. JSON raw data to follow. ==== Packers tested ==== | rle | [[http://csdb.dk/release/?id=34685|rle]] | | wvl-f | [[http://csdb.dk/release/?id=81773|LZWVL]]\ (fast/slow) | | wvl-s | ::: | | LZMV256 | LZMV (MagerValp, unreleased),\ (256b/4k window)| | LZMV4k | ::: | | tc | TinyCrunch (ChristopherJam, unreleased) | | nucrunch | [[http://csdb.dk/release/?id=145270|NuCrunch 0.1]] | | bb2.0 | [[http://csdb.dk/release/?id=145031|Byteboozer 2.0]] | | bitfire | [[https://github.com/bboxy/bitfire|Bitfire 0.6]] | | doynax | [[http://csdb.dk/release/?id=129574|Doynamite 1.1]] | | exomem | Exomizer \ (mem/raw) | | exoraw | ::: | | pu-f | [[http://csdb.dk/release/?id=6089|PuCrunch]] (fast) | | LZMPi | LZMPi ([[https://github.com/martinpiper/C64Public/tree/master/Compression|compression]], [[https://github.com/martinpiper/C64Public/tree/master/Decompression|decompression]]) | | subsizer | [[http://csdb.dk/release/?id=154516|Subsizer 0.5]] | (tests mostly performed in February 2016. Some may have since improved) ==== Results ==== === compressed filesizes in bytes === | ^ bin ^ rle ^ wvl-f ^ wvl-s ^ LZMV256 ^ tc ^ LZMV4k ^ nucrunch ^ bb2.0 ^ bitfire ^ doynax ^ exomem ^ pu-f ^ LZMPi ^ exoraw ^ subsizer | ^ 1 | 11008 | 8020 | 4529 | 4151 | 4539 | 4329 | 4205 | 3225 | 3322 | 3324 | 3265 | 2988 | 3711 | 3184 | 2988 | 2956 | ^ 2 | 4973 | 4314 | 3532 | 3309 | 3575 | 3423 | 3183 | 2498 | 2513 | 2515 | 2512 | 2225 | 3005 | 2410 | 2241 | 2205 | ^ 3 | 3949 | 3498 | 2991 | 2617 | 3018 | 2972 | 2551 | 2091 | 2098 | 2097 | 2108 | 1808 | 2530 | 1931 | 1817 | 1788 | ^ 4 | 7016 | 6456 | 4242 | 4085 | 4314 | 4225 | 4343 | 3622 | 3682 | 3682 | 3617 | 3442 | 3924 | 3571 | 3454 | 3456 | ^ 5 | 34760 | 27647 | 25781 | 24895 | 26116 | 25210 | 23845 | 20447 | 20530 | 20531 | 20405 | 19715 | 21182 | 20362 | 19631 | 19519 | ^ 6 | 31605 | 12511 | 11283 | 10923 | 11352 | 11614 | 10619 | 8915 | 8998 | 9004 | 8904 | 8322 | 9203 | 8719 | 8337 | 8396 | ^ 7 | 20392 | 17295 | 12108 | 11285 | 12188 | 11445 | 11154 | 9140 | 9241 | 9242 | 9289 | 8765 | 9789 | 9256 | 8751 | 8766 | ^ 8 | 5713 | 5407 | 4179 | 3916 | 3987 | 3936 | 3959 | 3166 | 3165 | 3162 | 3132 | 3081 | 3656 | 3048 | 3059 | 3063 | ^ 9 | 8960 | 7986 | 6914 | 6896 | 6943 | 6572 | 6505 | 5502 | 5491 | 5491 | 5430 | 5304 | 6000 | 5563 | 5295 | 5307 | === compression ratio (%) === | ^ bin ^ rle ^ wvl-f ^ wvl-s ^ LZMV256 ^ tc ^ LZMV4k ^ nucrunch ^ bb2.0 ^ bitfire ^ doynax ^ exomem ^ pu-f ^ LZMPi ^ exoraw ^ subsizer | ^ 1 | 100.0 | 72.9 | 41.1 | 37.7 | 41.2 | 39.3 | 38.2 | 29.3 | 30.2 | 30.2 | 29.7 | 27.1 | 33.7 | 28.9 | 27.1 | 26.9| ^ 2 | 100.0 | 86.7 | 71.0 | 66.5 | 71.9 | 68.8 | 64.0 | 50.2 | 50.5 | 50.6 | 50.5 | 44.7 | 60.4 | 48.5 | 45.1 | 44.3| ^ 3 | 100.0 | 88.6 | 75.7 | 66.3 | 76.4 | 75.3 | 64.6 | 53.0 | 53.1 | 53.1 | 53.4 | 45.8 | 64.1 | 48.9 | 46.0 | 45.3| ^ 4 | 100.0 | 92.0 | 60.5 | 58.2 | 61.5 | 60.2 | 61.9 | 51.6 | 52.5 | 52.5 | 51.6 | 49.1 | 55.9 | 50.9 | 49.2 | 49.3| ^ 5 | 100.0 | 79.5 | 74.2 | 71.6 | 75.1 | 72.5 | 68.6 | 58.8 | 59.1 | 59.1 | 58.7 | 56.7 | 60.9 | 58.6 | 56.5 | 56.2| ^ 6 | 100.0 | 39.6 | 35.7 | 34.6 | 35.9 | 36.7 | 33.6 | 28.2 | 28.5 | 28.5 | 28.2 | 26.3 | 29.1 | 27.6 | 26.4 | 26.6| ^ 7 | 100.0 | 84.8 | 59.4 | 55.3 | 59.8 | 56.1 | 54.7 | 44.8 | 45.3 | 45.3 | 45.6 | 43.0 | 48.0 | 45.4 | 42.9 | 43.0| ^ 8 | 100.0 | 94.6 | 73.1 | 68.5 | 69.8 | 68.9 | 69.3 | 55.4 | 55.4 | 55.3 | 54.8 | 53.9 | 64.0 | 53.4 | 53.5 | 53.6| ^ 9 | 100.0 | 89.1 | 77.2 | 77.0 | 77.5 | 73.3 | 72.6 | 61.4 | 61.3 | 61.3 | 60.6 | 59.2 | 67.0 | 62.1 | 59.1 | 59.2| | | 100.0 | 80.9 | 63.1 | 59.5 | 63.2 | 61.3 | 58.6 | 48.1 | 48.4 | 48.4 | 48.1 | 45.1 | 53.7 | 47.1 | 45.1 | 44.9 | === number of frames to depack === | ^ bin ^ rle ^ wvl-f ^ wvl-s ^ LZMV256 ^ tc ^ LZMV4k ^ nucrunch ^ bb2.0 ^ bitfire ^ doynax ^ exomem ^ pu-f ^ LZMPi ^ exoraw ^ subsizer | ^ 1 | | 11.5 | 13.5 | 14.5 | 13.7 | 15.5 | 16.9 | 21.8 | 24.3 | 24.4 | 27.5 | 57.9 | 54.7 | 79.3 | | 38.2| ^ 2 | | 5.5 | 7.5 | 7.5 | 8.4 | 9.5 | 9.6 | 13.4 | 15.1 | 15.1 | 17.5 | 38.5 | 39.6 | 53.1 | | 22.0| ^ 3 | | 4.5 | 6.5 | 6.5 | 6.2 | 7.5 | 7.1 | 9.8 | 10.9 | 10.9 | 12.5 | 28.5 | 31.9 | 41.4 | | 16.4| ^ 4 | | 8.5 | 9.5 | 9.5 | 9.4 | 10.5 | 11.5 | 16.4 | 18.1 | 18.1 | 20.5 | 53.1 | 52.0 | 75.4 | | 32.5| ^ 5 | | 36.5 | 39.5 | 42.5 | 46.6 | 59.5 | 58.4 | 99.9 | 107.7 | 107.4 | 119.5 | 295.9 | 298.6 | 431.0 | | 185.3| ^ 6 | | 20.5 | 25.5 | 25.5 | 38.2 | 37.5 | 35.8 | 57.1 | 61.5 | 62.0 | 49.5 | 142.3 | 152.8 | 220.0 | | 94.9| ^ 7 | | 22.5 | 25.5 | 26.5 | 29.1 | 32.5 | 35.0 | 49.5 | 54.5 | 54.5 | 60.5 | 139.2 | 139.8 | 205.8 | | 87.8| ^ 8 | | 6.5 | 8.5 | 8.5 | 8.9 | 10.5 | 10.3 | 15.2 | 16.9 | 17.0 | 18.5 | 44.8 | 47.7 | 65.1 | | 26.5| ^ 9 | | 9.5 | 12.5 | 12.5 | 14.2 | 16.5 | 16.6 | 26.5 | 29.6 | 29.4 | 32.5 | 78.9 | 81.7 | 117.4 | | 49.5| === kilobytes output per second === | ^ bin ^ rle ^ wvl-f ^ wvl-s ^ LZMV256 ^ tc ^ LZMV4k ^ nucrunch ^ bb2.0 ^ bitfire ^ doynax ^ exomem ^ pu-f ^ LZMPi ^ exoraw ^ subsizer | ^ 1 | | 46.9 | 39.9 | 37.2 | 39.3 | 34.8 | 31.9 | 24.8 | 22.2 | 22.1 | 19.6 | 9.3 | 9.9 | 6.8 | | 14.1 | ^ 2 | | 44.3 | 32.5 | 32.5 | 29.0 | 25.6 | 25.4 | 18.1 | 16.1 | 16.1 | 13.9 | 6.3 | 6.1 | 4.6 | | 11.1 | ^ 3 | | 43.0 | 29.7 | 29.7 | 31.2 | 25.8 | 27.2 | 19.7 | 17.7 | 17.8 | 15.5 | 6.8 | 6.1 | 4.7 | | 11.8 | ^ 4 | | 40.4 | 36.2 | 36.2 | 36.5 | 32.7 | 29.9 | 21.0 | 18.9 | 19.0 | 16.8 | 6.5 | 6.6 | 4.6 | | 10.6 | ^ 5 | | 46.6 | 43.1 | 40.0 | 36.5 | 28.6 | 29.1 | 17.0 | 15.8 | 15.8 | 14.2 | 5.8 | 5.7 | 3.9 | | 9.2 | ^ 6 | | 75.5 | 60.7 | 60.7 | 40.5 | 41.3 | 43.2 | 27.1 | 25.2 | 25.0 | 31.3 | 10.9 | 10.1 | 7.0 | | 16.3 | ^ 7 | | 44.4 | 39.1 | 37.7 | 34.3 | 30.7 | 28.5 | 20.2 | 18.3 | 18.3 | 16.5 | 7.2 | 7.1 | 4.9 | | 11.4 | ^ 8 | | 43.0 | 32.9 | 32.9 | 31.4 | 26.6 | 27.2 | 18.4 | 16.5 | 16.4 | 15.1 | 6.2 | 5.9 | 4.3 | | 10.6 | ^ 9 | | 46.2 | 35.1 | 35.1 | 30.9 | 26.6 | 26.4 | 16.5 | 14.8 | 14.9 | 13.5 | 5.6 | 5.4 | 3.7 | | 8.9 | | | | 47.8 | 38.8 | 38.0 | 34.4 | 30.3 | 29.9 | 20.3 | 18.4 | 18.4 | 17.4 | 7.2 | 7.0 | 4.9 | | 11.5 | === cycles per byte consumed === | ^ bin ^ rle ^ wvl-f ^ wvl-s ^ LZMV256 ^ tc ^ LZMV4k ^ nucrunch ^ bb2.0 ^ bitfire ^ doynax ^ exomem ^ pu-f ^ LZMPi ^ exoraw ^ subsizer | ^ 1 | | 28.2 | 58.6 | 68.7 | 59.3 | 70.4 | 79.0 | 132.6 | 143.6 | 144.1 | 165.6 | 380.9 | 289.7 | 489.6 | | 254.2 | ^ 2 | | 25.1 | 41.7 | 44.6 | 46.2 | 54.6 | 59.3 | 105.8 | 118.4 | 118.4 | 136.9 | 340.1 | 259.3 | 433.3 | | 196.3 | ^ 3 | | 25.3 | 42.7 | 48.8 | 40.4 | 49.6 | 54.7 | 92.3 | 102.4 | 102.0 | 116.6 | 309.8 | 247.9 | 421.3 | | 179.9 | ^ 4 | | 25.9 | 44.0 | 45.7 | 42.8 | 48.8 | 52.0 | 88.9 | 96.8 | 96.4 | 111.4 | 303.2 | 260.4 | 415.2 | | 184.8 | ^ 5 | | 26.0 | 30.1 | 33.6 | 35.1 | 46.4 | 48.1 | 96.0 | 103.1 | 102.8 | 115.1 | 295.0 | 277.1 | 416.1 | | 186.6 | ^ 6 | | 32.2 | 44.4 | 45.9 | 66.1 | 63.5 | 66.3 | 126.0 | 134.3 | 135.4 | 109.3 | 336.1 | 326.3 | 495.9 | | 222.1 | ^ 7 | | 25.6 | 41.4 | 46.2 | 46.9 | 55.8 | 61.7 | 106.4 | 115.9 | 116.0 | 128.0 | 312.2 | 280.7 | 437.0 | | 196.8 | ^ 8 | | 23.6 | 40.0 | 42.7 | 43.9 | 52.4 | 51.1 | 94.5 | 105.2 | 105.9 | 116.1 | 285.8 | 256.4 | 419.5 | | 169.8 | ^ 9 | | 23.4 | 35.5 | 35.6 | 40.2 | 49.3 | 50.2 | 94.8 | 105.9 | 105.4 | 117.6 | 292.4 | 267.7 | 414.7 | | 183.4 | ==== Sources and credits ==== Benchmarks originally posted at * [[http://csdb.dk/forums/?roomid=11&topicid=103226&showallposts=1|CSDb User Forums - Doynamite 1.x]] * [[http://csdb.dk/forums/?roomid=11&topicid=114681&showallposts=1|CSDb User Forums - Nucrunch 0.1]] * [[http://csdb.dk/forums/?roomid=12&topicid=123048&showallposts=1|CSDb User Forums - Subsizer 0.5]] as measured by WVL, Christopher Jam, MagerValp, Martin Piper, and tlr.