- PVSM.RU - https://www.pvsm.ru -

Рождение нового алгоритма по имени Broo и сравнение с Brotli и остальными

Доброго времени суток читатели и гости сайта, речь пойдет об алгоритме сжатия без потерь [1], который является совместным «ребенком». В данной статье будут приведены промежуточные результаты которых удалось добиться, в виде таблиц сравнения с популярными алгоритмами.

Коротко об алгоритме

Основная идеология для алгоритма была составлена в нескольких характеристиках:

  • Не привязан к типам файлов
  • Хороший коэфициент сжатия
  • Быстрая скорость распаковки

Скорость упаковки (сжатия) сюда изначально не была включена, но постепенно будет улучшаться как и весь алгоритм в целом. Не используются энтропийное сжатие и словарные методы.

Подготовка

Для чистоты и простоты проведения измерений, алгоритм интегрировали в утилиту lzbench (cсылка на GitHub [2]), так как в ней уже присутствует достаточное кол-во других алгоритмов и легко интегрировать свой.

Далее были выбраны файлы из уже готового пакета для тестирования алгоритмов с названием Silesia. Краткое описание файлов:

Имя файла Описание Тип Размер, Байт
dickens Коллекция работ Чарльза Диккенса txt (eng) 10 192 446
mozilla tar архив с исполняемыми файлами Mozilla 1.0 exe 51 220 480
mr Изображение МРТ image 9 970 564
nci База химических структур database 33 553 445
ooffice Dll файлы из Open Office.org 1.01 exe 6 152 192
osdb Пример базы данных MySQL формата из database 10 085 684
reymont Текст книги Polish, pdf 6 627 202
samba tar архив исходников src 21 606 400
sao Звездный каталог Смитсоновской астрофизической обсерватории bin data 7 251 944
webster Американский словарь английского языка Уэбстера html 41 458 703
xml Коллекция xml файлов xml 5 345 280
X-ray Рентген изображение image 8 474 240

Источник [3]

Список алгоритмов которые учавствуют в сравнениях

  • Brotli
  • Broo
  • Csc
  • Gipfeli
  • Libdeflate
  • Lz4
  • Lz5
  • Lzlib
  • Lzma
  • Lzsse
  • Quicklz
  • Snappy
  • Xpack
  • Yalz77
  • Yappy
  • Zlib
  • Zstd

Список насыщен алгоритмами которые решают разные задачи, но все познается в сравнении.

Короткое описание некоторых из них

Brotli — основан на современном варианте алгоритма LZ77 [4], энтропийном кодировании Хаффмана [5] и моделировании контекста 2-го порядка.
Предназначен для ускорения загрузки веб-страниц, поддерживается в браузерах Chrome, основанных на Chromium и в Firefox.

Deflate — алгоритм сжатия без потерь, использующий комбинацию алгоритмов LZ77 и Хаффмана.

Zstandard (Zstd) — алгоритм сжатия данных без потерь, разрабатываемый с 2015 Yann Collet при поддержке Facebook. Cочетает словарный алгоритм сжатия данных типа LZ77 и эффективное энтропийное кодирование типа tANS (FSE — Finite State Entropy), модификацию кода Хаффмана, реализующую нецелое количество бит для хранения символов.

LZMA — используется в архиваторе 7-Zip для создания сжатых архивов в формате 7z. Алгоритм основан на схеме сжатия данных по словарю, сходной с использованной в LZ77, и обеспечивает высокий коэффициент сжатия (обычно превышающий коэффициент, получаемый при сжатии с использованием bzip2), а также позволяет использовать словари различного размера (до 4 Гб).

Snappy — еще один алгорим сжатия без потерь от google предназначен для достижения высоких скоростей без достижения максимальных степеней сжатия.

Характеристики ПК

Процессор DualCore Intel Core i3 550, 3200 MHz [6]
Память GoodRam 8119 Mb DDR3-1333 DDR3 SDRAM
ОС Ubuntu 16.10 x64

Результаты

memcpy — функция которая копирует данные, взята как эталон по скорости упаковки и распаковки.

Таблицы отсортированы по коэфициенту сжатия (“% от оригинала” так выводит lzbench, не стал конвертировать) от мелкого к большему.

Тест 1. Коллекция работ Чарльза Диккенса, text

Имя алгоритма Скорость упаковки Скорость распаковки Размер сжатого файла, Байт % от оригинала Имя файла, тип
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 4401269 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

Тест 2. Tar архив с исполняемыми файлами Mozilla 1.0, exe

Имя алгоритма Скорость упаковки Скорость распаковки Размер сжатого файла, Байт % от оригинала Имя файла, тип
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 32.07 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

Тест 3. Изображение МРТ, image

Имя алгоритма Скорость упаковки Скорость распаковки Размер сжатого файла, Байт % от оригинала Имя файла, тип
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

Тест 4. База химических структур, database

Имя алгоритма Скорость упаковки Скорость распаковки Размер сжатого файла, Байт % от оригинала Имя файла, тип
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 15.09 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

Тест 5. Dll файлы из Open Office.org 1.01, exe

Имя алгоритма Скорость упаковки Скорость распаковки Размер сжатого файла, Байт % от оригинала Имя файла, тип
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

Тест 6. Пример базы данных MySQL формата из Open Source Database Benchmark, database

Имя алгоритма Скорость упаковки Скорость распаковки Размер сжатого файла, Байт % от оригинала Имя файла, тип
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

“Послесловие”

Следует заметить, что он все еще сыроват и еще есть достаточно работы для улучшения, но уже сейчас дает положительный эффект. Впереди еще часы генерирования и проверки гипотез, написание тестов и оптимизации кода.

Спасибо за внимание.

Автор: antoxa950

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/algoritmy/247008

Ссылки в тексте:

[1] сжатия без потерь: https://ru.wikipedia.org/wiki/%D0%A1%D0%B6%D0%B0%D1%82%D0%B8%D0%B5_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%BE%D1%82%D0%B5%D1%80%D1%8C

[2] cсылка на GitHub: https://github.com/inikep/lzbench

[3] Источник: http://sun.aei.polsl.pl/~sdeor/index.php?page=silesia

[4] LZ77: https://ru.wikipedia.org/wiki/LZ77

[5] кодировании Хаффмана: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%A5%D0%B0%D1%84%D1%84%D0%BC%D0%B0%D0%BD%D0%B0

[6] DualCore Intel Core i3 550, 3200 MHz: http://ark.intel.com/products/48505/Intel-Core-i3-550-Processor-4M-Cache-3_20-GHz

[7] Источник: https://habrahabr.ru/post/322978/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox