Birth of a new algorithm named Broo and comparison with Brotli and others
Good day to the residents and visitors of the site, we will talk about the lossless compression algorithm , which is a joint “child”. This article will present the intermediate results which were achieved, in the form of comparison tables with popular algorithms.
The main ideology for the algorithm was composed in several characteristics:
The packing (compression) speed was not initially included here, but will gradually improve like the whole algorithm as a whole. Entropy compression and dictionary methods are not used.
For the purity and simplicity of measurements, the algorithm was integrated into the lzbench utility (link to GitHub ), since it already has a sufficient number of other algorithms and it is easy to integrate your own.
Next, files were selected from an existing package for testing algorithms called Silesia. Short file description:
→ Source
The list is full of algorithms that solve different problems, but everything is known in comparison.
Brotli - based on the modern version of the LZ77 algorithm , Huffman entropy coding and modeling of the 2nd order context.
Designed to speed up the loading of web pages, it is supported in Chrome browsers based on Chromium and in Firefox.
Deflate is a lossless compression algorithm using a combination of LZ77 and Huffman algorithms.
Zstandard (Zstd) is a lossless data compression algorithm developed since 2015 by Yann Collet with the support of Facebook. It combines a vocabulary data compression algorithm of the LZ77 type and efficient entropy coding of the tANS type (FSE - Finite State Entropy), a modification of the Huffman code that implements a non-integer number of bits for storing characters.
LZMA- used in the 7-Zip archiver to create compressed archives in 7z format. The algorithm is based on a dictionary data compression scheme similar to that used in LZ77, and provides a high compression ratio (usually higher than the compression ratio obtained using bzip2), and also allows the use of dictionaries of various sizes (up to 4 GB).
Snappy - another google lossless compression algorithm designed to achieve high speeds without reaching maximum compression ratios.
Processor DualCore Intel Core i3 550, 3200 MHz
Memory GoodRam 8119 Mb DDR3-1333 DDR3 SDRAM
OS Ubuntu 16.10 x64
memcpy - a function that copies data, taken as a benchmark for the speed of packing and unpacking.
Tables are sorted by compression ratio (“% of the original” lzbench displays, did not convert) from small to large.
It should be noted that it is still damp and there is still enough work to improve, but it is already having a positive effect. There are still hours to generate and test hypotheses, write tests and optimize code.
Thanks for attention.
Briefly about the algorithm
The main ideology for the algorithm was composed in several characteristics:
- Not attached to file types
- Good compression ratio
- Fast unpacking speed
The packing (compression) speed was not initially included here, but will gradually improve like the whole algorithm as a whole. Entropy compression and dictionary methods are not used.
Training
For the purity and simplicity of measurements, the algorithm was integrated into the lzbench utility (link to GitHub ), since it already has a sufficient number of other algorithms and it is easy to integrate your own.
Next, files were selected from an existing package for testing algorithms called Silesia. Short file description:
| File name | Description | A type | Size Byte |
| dickens | Collection of Charles Dickens | txt (eng) | 10 192 446 |
| mozilla | tar archive with Mozilla 1.0 executables | exe | 51 220 480 |
| mr | MRI image | image | 9 970 564 |
| nci | Base chemical structures | database | 33 553 445 |
| ooffice | Dll files from Open Office.org 1.01 | exe | 6 152 192 |
| osdb | Example MySQL database format from | database | 10 085 684 |
| reymont | Book text | Polish, pdf | 6 627 202 |
| samba | tar source archive | src | 21 606 400 |
| sao | Star Catalog of the Smithsonian Astrophysical Observatory | bin data | 7 251 944 |
| webster | Webster's American English Dictionary | html | 41 458 703 |
| xml | Xml files collection | xml | 5 345 280 |
| X ray | X-ray image | image | 8 474 240 |
List of algorithms that participate in comparisons
- Brotli
- Broo
- Csc
- Gipfeli
- Libdeflate
- Lz4
- Lz5
- Lzlib
- Lzma
- Lzsse
- Quicklz
- Snappy
- Xpack
- Yalz77
- Yappy
- Zlib
- Zstd
The list is full of algorithms that solve different problems, but everything is known in comparison.
A short description of some of them
Brotli - based on the modern version of the LZ77 algorithm , Huffman entropy coding and modeling of the 2nd order context.
Designed to speed up the loading of web pages, it is supported in Chrome browsers based on Chromium and in Firefox.
Deflate is a lossless compression algorithm using a combination of LZ77 and Huffman algorithms.
Zstandard (Zstd) is a lossless data compression algorithm developed since 2015 by Yann Collet with the support of Facebook. It combines a vocabulary data compression algorithm of the LZ77 type and efficient entropy coding of the tANS type (FSE - Finite State Entropy), a modification of the Huffman code that implements a non-integer number of bits for storing characters.
LZMA- used in the 7-Zip archiver to create compressed archives in 7z format. The algorithm is based on a dictionary data compression scheme similar to that used in LZ77, and provides a high compression ratio (usually higher than the compression ratio obtained using bzip2), and also allows the use of dictionaries of various sizes (up to 4 GB).
Snappy - another google lossless compression algorithm designed to achieve high speeds without reaching maximum compression ratios.
PC specifications
Processor DualCore Intel Core i3 550, 3200 MHz
Memory GoodRam 8119 Mb DDR3-1333 DDR3 SDRAM
OS Ubuntu 16.10 x64
results
memcpy - a function that copies data, taken as a benchmark for the speed of packing and unpacking.
Tables are sorted by compression ratio (“% of the original” lzbench displays, did not convert) from small to large.
Test 1. Collection of works by Charles Dickens, text
| Algorithm Name | Packing speed | Decompression speed | Compressed File Size, Bytes | % of the original | File Name Type |
| memcpy | 4029 MB / s | 4034 MB / s | 10192446 | 100.00 | dickens txt |
| csc 2016-10-13 -1 | 18 MB / s | 31 MB / s | 4020916 | 39.45 | dickens txt |
| lzlib 1.7 -0 | 7.76 MB / s | 34 MB / s | 3815335 | 37.43 | dickens txt |
| lzma 9.38 -0 | 13 MB / s | 38 MB / s | 4044850 | 39.68 | dickens txt |
| libdeflate 0.6 -1 | 85 MB / s | 435 MB / s | 4231543 | 41.52 | dickens txt |
| zstd 1.1.3 -1 | 143 MB / s | 486 MB / s | 4279273 | 41.98 | dickens txt |
| xpack 2016-06-02 -1 | 83 MB / s | 359 MB / s | 4282245 | 42.01 | dickens txt |
| brotli 0.5.2 -0 | 168 MB / s | 178 MB / s | 4,401,269 | 43.18 | dickens txt |
| zlib 1.2.8 -1 | 50 MB / s | 195 MB / s | 4585618 | 44.99 | dickens txt |
| broo 1.0 | 6.03 MB / s | 265 MB / s | 4750936 | 46.61 | dickens txt |
| gipfeli 2016-07-13 | 178 MB / s | 254 MB / s | 4955632 | 48.62 | dickens txt |
| yalz77 2015-09-19 -1 | 62 MB / s | 304 MB / s | 5634109 | 55.28 | dickens txt |
| quicklz 1.5.0 -1 | 250 MB / s | 326 MB / s | 5831353 | 57.21 | dickens txt |
| lzsse2 2016-05-14 -0 | 18 MB / s | 1481 MB / s | 5865705 | 57.55 | dickens txt |
| yappy 2014-03-22 -0 | 91 MB / s | 1122 MB / s | 6141853 | 60.26 | dickens txt |
| snappy 1.1.3 | 179 MB / s | 648 MB / s | 6337834 | 62.18 | dickens txt |
| lz4 1.7.5 | 264 MB / s | 1652 MB / s | 6428742 | 63.07 | dickens txt |
| lz5 2.0 -10 | 216 MB / s | 1855 MB / s | 6431869 | 63.10 | dickens txt |
Test 2. Tar archive with executable files Mozilla 1.0, exe
| Algorithm Name | Packing speed | Decompression speed | Compressed File Size, Bytes | % of the original | File Name Type |
| memcpy | 3986 MB / s | 4042 MB / s | 51220480 | 100.00 | mozilla exe |
| csc 2016-10-13 -1 | 11 MB / s | 41 MB / s | 15331191 | 29.93 | mozilla exe |
| lzma 9.38 -0 | 17 MB / s | 43 MB / s | 16425272 | 07/32 | mozilla exe |
| lzlib 1.7 -0 | 18 MB / s | 33 MB / s | 16470484 | 32.16 | mozilla exe |
| xpack 2016-06-02 -1 | 76 MB / s | 368 MB / s | 18391874 | 35.91 | mozilla exe |
| libdeflate 0.6 -1 | 92 MB / s | 396 MB / s | 19780124 | 38.62 | mozilla exe |
| zstd 1.1.3 -1 | 209 MB / s | 542 MB / s | 20120459 | 39.28 | mozilla exe |
| zlib 1.2.8 -1 | 53 MB / s | 209 MB / s | 20577226 | 40.17 | mozilla exe |
| brotli 0.5.2 -0 | 217 MB / s | 186 MB / s | 21740128 | 42.44 | mozilla exe |
| broo 1.0 | 5.11 MB / s | 350 MB / s | 23177220 | 45.25 | mozilla exe |
| gipfeli 2016-07-13 | 236 MB / s | 436 MB / s | 24380558 | 47.60 | mozilla exe |
| quicklz 1.5.0 -1 | 315 MB / s | 368 MB / s | 24756819 | 48.33 | mozilla exe |
| yalz77 2015-09-19 -1 | 49 MB / s | 436 MB / s | 25454532 | 49.70 | mozilla exe |
| lzsse2 2016-05-14 -0 | 13 MB / s | 1493 MB / s | 25826648 | 50.42 | mozilla exe |
| lz4 1.7.5 | 437 MB / s | 1876 MB / s | 26435667 | 51.61 | mozilla exe |
| snappy 1.1.3 | 303 MB / s | 1013 MB / s | 26461924 | 51.66 | mozilla exe |
| lz5 2.0 -10 | 334 MB / s | 2097 MB / s | 27016242 | 52.74 | mozilla exe |
| yappy 2014-03-22 -0 | 107 MB / s | 1749 MB / s | 27728218 | 54.14 | mozilla exe |
Test 3. Image MRI, image
| Algorithm Name | Packing speed | Decompression speed | Compressed File Size, Bytes | % of the original | File Name Type |
| lzlib 1.7 -0 | 20 MB / s | 34 MB / s | 3130897 | 31.40 | mr, image |
| lzma 9.38 -0 | 16 MB / s | 44 MB / s | 3157626 | 31.67 | mr, image |
| csc 2016-10-13 -1 | 12 MB / s | 40 MB / s | 3285805 | 32.96 | mr, image |
| xpack 2016-06-02 -1 | 82 MB / s | 323 MB / s | 3526828 | 35.37 | mr, image |
| libdeflate 0.6 -1 | 98 MB / s | 428 MB / s | 3750985 | 37.62 | mr, image |
| zlib 1.2.8 -1 | 60 MB / s | 227 MB / s | 3828366 | 38.40 | mr, image |
| zstd 1.1.3 -1 | 191 MB / s | 637 MB / s | 3829231 | 38.41 | mr, image |
| brotli 0.5.2 -0 | 198 MB / s | 185 MB / s | 3975643 | 39.87 | mr, image |
| gipfeli 2016-07-13 | 220 MB / s | 395 MB / s | 4702561 | 47.16 | mr, image |
| broo 1.0 | 5.94 MB / s | 305 MB / s | 4741219 | 47.55 | mr, image |
| quicklz 1.5.0 -1 | 410 MB / s | 363 MB / s | 4778194 | 47.92 | mr, image |
| lzsse2 2016-05-14 -0 | 24 MB / s | 1523 MB / s | 5120289 | 51.35 | mr, image |
| yalz77 2015-09-19 -1 | 58 MB / s | 396 MB / s | 5269368 | 52.85 | mr, image |
| snappy 1.1.3 | 302 MB / s | 912 MB / s | 5419831 | 54.36 | mr, image |
| lz4 1.7.5 | 422 MB / s | 2024 MB / s | 5440937 | 54.57 | mr, image |
| yappy 2014-03-22 -0 | 108 MB / s | 1609 MB / s | 6454120 | 64.73 | mr, image |
| lz5 2.0 -10 | 294 MB / s | 2248 MB / s | 6978486 | 69.99 | mr, image |
Test 4. Base chemical structures, database
| Algorithm Name | Packing speed | Decompression speed | Compressed File Size, Bytes | % of the original | File Name Type |
| memcpy | 4042 MB / s | 4047 MB / s | 33553445 | 100.00 | nci db |
| csc 2016-10-13 -1 | 39 MB / s | 156 MB / s | 2463773 | 7.34 | nci db |
| lzma 9.38 -0 | 43 MB / s | 153 MB / s | 2777997 | 8.28 | nci db |
| lzlib 1.7 -0 | 49 MB / s | 103 MB / s | 2868761 | 8.55 | nci db |
| zstd 1.1.3 -1 | 435 MB / s | 915 MB / s | 2884530 | 8.60 | nci db |
| broo 1.0 | 8.65 MB / s | 1000 MB / s | 2981970 | 8.89 | nci db |
| xpack 2016-06-02 -1 | 180 MB / s | 807 MB / s | 3838847 | 11.44 | nci db |
| brotli 0.5.2 -0 | 539 MB / s | 575 MB / s | 3984199 | 11.87 | nci db |
| libdeflate 0.6 -1 | 180 MB / s | 1165 MB / s | 4066913 | 12.12 | nci db |
| zlib 1.2.8 -1 | 122 MB / s | 404 MB / s | 4624597 | 13.78 | nci db |
| yalz77 2015-09-19 -1 | 197 MB / s | 695 MB / s | 5050596 | 15.05 | nci db |
| gipfeli 2016-07-13 | 529 MB / s | 681 MB / s | 5063829 | 09/15 | nci db |
| lz4 1.7.5 | 765 MB / s | 2496 MB / s | 5533040 | 16.49 | nci db |
| lz5 2.0 -10 | 657 MB / s | 2644 MB / s | 5545810 | 16.53 | nci db |
| snappy 1.1.3 | 560 MB / s | 1452 MB / s | 6146844 | 18.32 | nci db |
| quicklz 1.5.0 -1 | 512 MB / s | 799 MB / s | 6160636 | 18.36 | nci db |
| lzsse2 2016-05-14 -0 | 15 MB / s | 2984 MB / s | 6339807 | 18.89 | nci db |
| yappy 2014-03-22 -0 | 179 MB / s | 1941 MB / s | 8967562 | 26.73 | nci db |
Test 5. Dll files from Open Office.org 1.01, exe
| Algorithm Name | Packing speed | Decompression speed | Compressed File Size, Bytes | % of the original | File Name Type |
| memcpy | 4054 MB / s | 4102 MB / s | 6152192 | 100.00 | ooffice, exe |
| csc 2016-10-13 -1 | 9.91 MB / s | 29 MB / s | 2301523 | 37.41 | ooffice, exe |
| lzma 9.38 -0 | 13 MB / s | 31 MB / s | 2841578 | 46.19 | ooffice, exe |
| lzlib 1.7 -0 | 14 MB / s | 24 MB / s | 2879489 | 46.80 | ooffice, exe |
| xpack 2016-06-02 -1 | 60 MB / s | 342 MB / s | 3137960 | 51.01 | ooffice, exe |
| libdeflate 0.6 -1 | 69 MB / s | 286 MB / s | 3187434 | 51.81 | ooffice, exe |
| zlib 1.2.8 -1 | 40 MB / s | 151 MB / s | 3290532 | 53.49 | ooffice, exe |
| brotli 0.5.2 -0 | 154 MB / s | 143 MB / s | 3539615 | 57.53 | ooffice, exe |
| zstd 1.1.3 -1 | 166 MB / s | 487 MB / s | 3579899 | 58.19 | ooffice, exe |
| broo 1.0 | 4.93 MB / s | 412 MB / s | 3757206 | 61.07 | ooffice, exe |
| gipfeli 2016-07-13 | 163 MB / s | 354 MB / s | 3922276 | 63.75 | ooffice, exe |
| lzsse2 2016-05-14 -0 | 15 MB / s | 1205 MB / s | 3995091 | 64.94 | ooffice, exe |
| quicklz 1.5.0 -1 | 234 MB / s | 264 MB / s | 4013859 | 65.24 | ooffice, exe |
| yalz77 2015-09-19 -1 | 35 MB / s | 398 MB / s | 4125570 | 67.06 | ooffice, exe |
| yappy 2014-03-22 -0 | 82 MB / s | 1718 MB / s | 4235687 | 68.85 | ooffice, exe |
| snappy 1.1.3 | 222 MB / s | 889 MB / s | 4271150 | 69.42 | ooffice, exe |
| lz4 1.7.5 | 337 MB / s | 1671 MB / s | 4338918 | 70.53 | ooffice, exe |
| lz5 2.0 -10 | 251 MB / s | 1997 MB / s | 4370070 | 71.03 | ooffice, exe |
Test 6. Example MySQL database format from Open Source Database Benchmark, database
| Algorithm Name | Packing speed | Decompression speed | Compressed File Size, Bytes | % of the original | File Name Type |
| memcpy | 4095 MB / s | 4073 MB / s | 10085684 | 100.00 | osdb, db |
| csc 2016-10-13 -1 | 10 MB / s | 38 MB / s | 3317800 | 32.90 | osdb, db |
| lzlib 1.7 -0 | 19 MB / s | 33 MB / s | 3345965 | 33.18 | osdb, db |
| xpack 2016-06-02 -1 | 68 MB/s | 475 MB/s | 3752871 | 37.21 | osdb, db |
| zstd 1.1.3 -1 | 194 MB/s | 585 MB/s | 3770566 | 37.39 | osdb, db |
| libdeflate 0.6 -1 | 90 MB/s | 470 MB/s | 3896803 | 38.64 | osdb, db |
| brotli 0.5.2 -0 | 214 MB/s | 224 MB/s | 3910502 | 38.77 | osdb, db |
| lzma 9.38 -0 | 15 MB/s | 38 MB/s | 3988823 | 39.55 | osdb, db |
| zlib 1.2.8 -1 | 56 MB/s | 211 MB/s | 4076391 | 40.42 | osdb, db |
| broo 1.0 | 5.40 MB/s | 474 MB/s | 4147465 | 41.12 | osdb, db |
| lzsse2 2016-05-14 -0 | 12 MB/s | 1724 MB/s | 4492551 | 44.54 | osdb, db |
| gipfeli 2016-07-13 | 232 MB/s | 530 MB/s | 4517517 | 44.79 | osdb, db |
| yalz77 2015-09-19 -1 | 51 MB/s | 596 MB/s | 4570193 | 45.31 | osdb, db |
| lz4 1.7.5 | 359 MB/s | 1629 MB/s | 5256666 | 52.12 | osdb, db |
| lz5 2.0 -10 | 278 MB/s | 1842 MB/s | 5286739 | 52.42 | osdb, db |
| snappy 1.1.3 | 303 MB/s | 1110 MB/s | 5329321 | 52.84 | osdb, db |
| quicklz 1.5.0 -1 | 277 MB/s | 330 MB/s | 5496443 | 54.50 | osdb, db |
| yappy 2014-03-22 -0 | 70 MB/s | 1794 MB/s | 7515735 | 74.52 | osdb, db |
Тест 7. Текст книги Chłopi, польского писателя Радислава Реймонта, Polish, PDF
| Имя алгоритма | Скорость упаковки | Скорость распаковки | Размер сжатого файла, Байт | % от оригинала | Имя файла, тип |
| memcpy | 4123 MB/s | 4120 MB/s | 6627202 | 100.00 | reymont, pdf |
| csc 2016-10-13 -1 | 15 MB/s | 47 MB/s | 1872324 | 28.25 | reymont, pdf |
| lzma 9.38 -0 | 15 MB/s | 49 MB/s | 1921954 | 29.00 | reymont, pdf |
| lzlib 1.7 -0 | 22 MB/s | 37 MB/s | 2082297 | 31.42 | reymont, pdf |
| zstd 1.1.3 -1 | 157 MB/s | 486 MB/s | 2167385 | 32.70 | reymont, pdf |
| libdeflate 0.6 -1 | 100 MB/s | 512 MB/s | 2206932 | 33.30 | reymont, pdf |
| xpack 2016-06-02 -1 | 97 MB/s | 389 MB/s | 2279716 | 34.40 | reymont, pdf |
| broo 1.0 | 5.10 MB/s | 423 MB/s | 2289019 | 34.54 | reymont, pdf |
| brotli 0.5.2 -0 | 212 MB/s | 226 MB/s | 2360732 | 35.62 | reymont, pdf |
| zlib 1.2.8 -1 | 59 MB/s | 213 MB/s | 2376430 | 35.86 | reymont, pdf |
| gipfeli 2016-07-13 | 222 MB/s | 318 MB/s | 2644916 | 39.91 | reymont, pdf |
| quicklz 1.5.0 -1 | 284 MB/s | 399 MB/s | 3003825 | 45.33 | reymont, pdf |
| yalz77 2015-09-19 -1 | 76 MB/s | 347 MB/s | 3017083 | 45.53 | reymont, pdf |
| lzsse2 2016-05-14 -0 | 16 MB/s | 1735 MB/s | 3039392 | 45.86 | reymont, pdf |
| yappy 2014-03-22 -0 | 119 MB/s | 1252 MB/s | 3161344 | 47.70 | reymont, pdf |
| lz4 1.7.5 | 303 MB/s | 1611 MB/s | 3181387 | 48.00 | reymont, pdf |
| lz5 2.0 -10 | 265 MB/s | 1626 MB/s | 3184901 | 48.06 | reymont, pdf |
| snappy 1.1.3 | 208 MB/s | 729 MB/s | 3233787 | 48.80 | reymont, pdf |
Тест 8. Tar архив исходников Samba 2-2.3, src
| Имя алгоритма | Скорость упаковки | Скорость распаковки | Размер сжатого файла, Байт | % от оригинала | Имя файла, тип |
| memcpy | 4048 MB/s | 4033 MB/s | 21606400 | 100.00 | samba, src |
| csc 2016-10-13 -1 | 17 MB/s | 60 MB/s | 4407241 | 20.40 | samba, src |
| lzlib 1.7 -0 | 26 MB/s | 46 MB/s | 5178819 | 23.97 | samba, src |
| lzma 9.38 -0 | 21 MB/s | 59 MB/s | 5338935 | 24.71 | samba, src |
| zstd 1.1.3 -1 | 257 MB/s | 715 MB/s | 5550637 | 25.69 | samba, src |
| xpack 2016-06-02 -1 | 107 MB/s | 568 MB/s | 5669295 | 26.24 | samba, src |
| libdeflate 0.6 -1 | 113 MB/s | 615 MB/s | 5922973 | 27.41 | samba, src |
| brotli 0.5.2 -0 | 304 MB/s | 285 MB/s | 6084327 | 28.16 | samba, src |
| broo 1.0 | 6.90 MB/s | 650 MB/s | 6186042 | 28.63 | samba, src |
| zlib 1.2.8 -1 | 73 MB/s | 276 MB/s | 6329455 | 29.29 | samba, src |
| gipfeli 2016-07-13 | 323 MB/s | 426 MB/s | 6810623 | 31.52 | samba, src |
| yalz77 2015-09-19 -1 | 81 MB/s | 512 MB/s | 7098899 | 32.86 | samba, src |
| quicklz 1.5.0 -1 | 366 MB/s | 497 MB/s | 7309452 | 33.83 | samba, src |
| lzsse2 2016-05-14 -0 | 14 MB/s | 2144 MB/s | 7395737 | 34.23 | samba, src |
| lz4 1.7.5 | 486 MB/s | 2035 MB/s | 7716839 | 35.72 | samba, src |
| lz5 2.0 -10 | 398 MB/s | 2246 MB/s | 7927178 | 36.69 | samba, src |
| snappy 1.1.3 | 353 MB/s | 1089 MB/s | 8008774 | 37.07 | samba, src |
| yappy 2014-03-22 -0 | 123 MB/s | 1769 MB/s | 9183273 | 42.50 | samba, src |
Тест 9. Звездный каталог Смитсоновской астрофизической обсерватории, bin
| Имя алгоритма | Скорость упаковки | Скорость распаковки | Размер сжатого файла, Байт | % от оригинала | Имя файла, тип |
| memcpy | 4096 MB/s | 4114 MB/s | 7251944 | 100.00 | sao, bin |
| lzma 9.38 -0 | 9.47 MB/s | 22 MB/s | 4923529 | 67.89 | sao, bin |
| lzlib 1.7 -0 | 10 MB/s | 16 MB/s | 5005573 | 69.02 | sao, bin |
| csc 2016-10-13 -1 | 5.69 MB/s | 17 MB/s | 5082846 | 70.09 | sao, bin |
| xpack 2016-06-02 -1 | 47 MB/s | 312 MB/s | 5259606 | 72.53 | sao, bin |
| libdeflate 0.6 -1 | 60 MB/s | 258 MB/s | 5494268 | 75.76 | sao, bin |
| zlib 1.2.8 -1 | 31 MB/s | 158 MB/s | 5567774 | 76.78 | sao, bin |
| brotli 0.5.2 -0 | 130 MB/s | 120 MB/s | 6019841 | 83.01 | sao, bin |
| gipfeli 2016-07-13 | 146 MB/s | 422 MB/s | 6043361 | 83.33 | sao, bin |
| broo 1.0 | 3.55 MB/s | 496 MB/s | 6086118 | 83.92 | sao, bin |
| yappy 2014-03-22 -0 | 68 MB/s | 1709 MB/s | 6201752 | 85.52 | sao, bin |
| zstd 1.1.3 -1 | 145 MB/s | 483 MB/s | 6254282 | 86.24 | sao, bin |
| yalz77 2015-09-19 -1 | 26 MB/s | 576 MB/s | 6299030 | 86.86 | sao, bin |
| snappy 1.1.3 | 212 MB/s | 969 MB/s | 6435266 | 88.74 | sao, bin |
| quicklz 1.5.0 -1 | 229 MB/s | 222 MB/s | 6498301 | 89.61 | sao, bin |
| lzsse2 2016-05-14 -0 | 15 MB/s | 941 MB/s | 6710542 | 92.53 | sao, bin |
| lz4 1.7.5 | 337 MB/s | 2161 MB/s | 6790273 | 93.63 | sao, bin |
| lz5 2.0 -10 | 236 MB/s | 2501 MB/s | 6792720 | 93.67 | sao, bin |
Тест 10. Американский словарь английского языка Уэбстера, html
| Имя алгоритма | Скорость упаковки | Скорость распаковки | Размер сжатого файла, Байт | % от оригинала | Имя файла, тип |
| memcpy | 3970 MB/s | 4008 MB/s | 41458703 | 100.00 | webster, html |
| csc 2016-10-13 -1 | 13 MB/s | 44 MB/s | 10360155 | 24.99 | webster, html |
| lzma 9.38 -0 | 17 MB/s | 47 MB/s | 12704878 | 30.64 | webster, html |
| lzlib 1.7 -0 | 22 MB/s | 38 MB/s | 12727596 | 30.70 | webster, html |
| zstd 1.1.3 -1 | 169 MB/s | 531 MB/s | 13738284 | 33.14 | webster, html |
| libdeflate 0.6 -1 | 99 MB/s | 524 MB/s | 13839192 | 33.38 | webster, html |
| broo 1.0 | 5.42 MB/s | 266 MB/s | 13854195 | 33.42 | webster, html |
| xpack 2016-06-02 -1 | 94 MB/s | 441 MB/s | 14006907 | 33.79 | webster, html |
| brotli 0.5.2 -0 | 187 MB/s | 207 MB/s | 14559007 | 35.12 | webster, html |
| zlib 1.2.8 -1 | 60 MB/s | 211 MB/s | 14991242 | 36.16 | webster, html |
| gipfeli 2016-07-13 | 209 MB/s | 281 MB/s | 16152312 | 38.96 | webster, html |
| lzsse2 2016-05-14 -0 | 14 MB/s | 1897 MB/s | 17459517 | 42.11 | webster, html |
| quicklz 1.5.0 -1 | 276 MB/s | 369 MB/s | 18315816 | 44.18 | webster, html |
| yalz77 2015-09-19 -1 | 62 MB/s | 315 MB/s | 18435248 | 44.47 | webster, html |
| yappy 2014-03-22 -0 | 107 MB/s | 1378 MB/s | 19899610 | 48.00 | webster, html |
| lz4 1.7.5 | 317 MB/s | 1593 MB/s | 20139988 | 48.58 | webster, html |
| lz5 2.0 -10 | 260 MB/s | 1790 MB/s | 20153547 | 48.61 | webster, html |
| snappy 1.1.3 | 214 MB/s | 765 MB/s | 20206466 | 48.74 | webster, html |
Тест 11. Коллекция xml файлов, xml
| Имя алгоритма | Скорость упаковки | Скорость распаковки | Размер сжатого файла, Байт | % от оригинала | Имя файла, тип |
| memcpy | 4118 MB/s | 4113 MB/s | 5345280 | 100.00 | xml |
| csc 2016-10-13 -1 | 27 MB/s | 99 MB/s | 606763 | 11.35 | xml |
| lzma 9.38 -0 | 34 MB/s | 108 MB/s | 691236 | 12.93 | xml |
| zstd 1.1.3 -1 | 363 MB/s | 887 MB/s | 703151 | 13.15 | xml |
| lzlib 1.7 -0 | 39 MB/s | 73 MB/s | 741537 | 13.87 | xml |
| broo 1.0 | 7.91 MB/s | 1277 MB/s | 800526 | 14.98 | xml |
| brotli 0.5.2 -0 | 409 MB/s | 451 MB/s | 905757 | 16.94 | xml |
| libdeflate 0.6 -1 | 143 MB/s | 856 MB/s | 940409 | 17.59 | xml |
| zlib 1.2.8 -1 | 104 MB/s | 344 MB/s | 965248 | 18.06 | xml |
| xpack 2016-06-02 -1 | 137 MB/s | 634 MB/s | 1000008 | 18.71 | xml |
| yalz77 2015-09-19 -1 | 157 MB/s | 666 MB/s | 1067378 | 19.97 | xml |
| gipfeli 2016-07-13 | 406 MB/s | 527 MB/s | 1100536 | 20.59 | xml |
| quicklz 1.5.0 -1 | 452 MB/s | 712 MB/s | 1124708 | 21.04 | xml |
| lzsse2 2016-05-14 -0 | 18 MB/s | 2870 MB/s | 1201125 | 22.47 | xml |
| lz4 1.7.5 | 617 MB/s | 1991 MB/s | 1227495 | 22.96 | xml |
| lz5 2.0 -10 | 524 MB/s | 2231 MB/s | 1240098 | 23.20 | xml |
| snappy 1.1.3 | 414 MB/s | 1196 MB/s | 1308374 | 24.48 | xml |
| yappy 2014-03-22 -0 | 155 MB/s | 1915 MB/s | 1605459 | 30.04 | xml |
Тест 12. Рентген изображение, image
| Имя алгоритма | Скорость упаковки | Скорость распаковки | Размер сжатого файла, Байт | % от оригинала | Имя файла, тип |
| memcpy | 4023 MB/s | 4106 MB/s | 8474240 | 100.00 | x-ray, image |
| csc 2016-10-13 -1 | 16 MB/s | 21 MB/s | 4049630 | 47.79 | x-ray, image |
| lzlib 1.7 -0 | 9.85 MB/s | 18 MB/s | 5079274 | 59.94 | x-ray, image |
| lzma 9.38 -0 | 10 MB/s | 23 MB/s | 5198894 | 61.35 | x-ray, image |
| xpack 2016-06-02 -1 | 48 MB/s | 243 MB/s | 5863367 | 69.19 | x-ray, image |
| libdeflate 0.6 -1 | 63 MB/s | 267 MB/s | 5999750 | 70.80 | x-ray, image |
| zlib 1.2.8 -1 | 35 MB/s | 145 MB/s | 6033932 | 71.20 | x-ray, image |
| brotli 0.5.2 -0 | 139 MB/s | 121 MB/s | 6600523 | 77.89 | x-ray, image |
| zstd 1.1.3 -1 | 419 MB/s | 569 MB/s | 6772286 | 79.92 | x-ray, image |
| lzsse2 2016-05-14 -0 | 17 MB/s | 883 MB/s | 7292876 | 86.06 | x-ray, image |
| quicklz 1.5.0 -1 | 264 MB/s | 219 MB/s | 7440632 | 87.80 | x-ray, image |
| gipfeli 2016-07-13 | 165 MB/s | 486 MB / s | 7641391 | 90.17 | x-ray image |
| broo 1.0 | 3.47 MB / s | 487 MB / s | 7702715 | 90.90 | x-ray image |
| yalz77 2015-09-19 -1 | 23 MB / s | 491 MB / s | 7933653 | 93.62 | x-ray image |
| snappy 1.1.3 | 446 MB / s | 1869 MB / s | 8209180 | 96.87 | x-ray image |
| yappy 2014-03-22 -0 | 59 MB / s | 3200 MB / s | 8328582 | 98.28 | x-ray image |
| lz4 1.7.5 | 852 MB / s | 3457 MB / s | 8390195 | 99.01 | x-ray image |
| lz5 2.0 -10 | 540 MB / s | 4126 MB / s | 8459685 | 99.83 | x-ray image |
“Afterword”
It should be noted that it is still damp and there is still enough work to improve, but it is already having a positive effect. There are still hours to generate and test hypotheses, write tests and optimize code.
Thanks for attention.