Существует множество алгоритмов сжатия, и bzip2
это один из самых медленных алгоритмов . Равнина gzip
имеет тенденцию быть значительно быстрее, обычно с не намного худшим сжатием. Когда скорость важнее всего, lzop
моя любимая. Плохое сжатие, но о, так быстро.
Я решил немного повеселиться и сравнить несколько алгоритмов, включая их параллельные реализации. Входной файл - это вывод pg_dumpall
команды на моей рабочей станции, файл SQL размером 1913 МБ. Аппаратное обеспечение - старый четырехъядерный процессор i5. Время настенное время просто сжатия. Параллельные реализации настроены на использование всех 4 ядер. Таблица отсортирована по скорости сжатия.
Algorithm Compressed size Compression Decompression
lzop 398MB 20.8% 4.2s 455.6MB/s 3.1s 617.3MB/s
lz4 416MB 21.7% 4.5s 424.2MB/s 1.6s 1181.3MB/s
brotli (q0) 307MB 16.1% 7.3s 262.1MB/s 4.9s 390.5MB/s
brotli (q1) 234MB 12.2% 8.7s 220.0MB/s 4.9s 390.5MB/s
zstd 266MB 13.9% 11.9s 161.1MB/s 3.5s 539.5MB/s
pigz (x4) 232MB 12.1% 13.1s 146.1MB/s 4.2s 455.6MB/s
gzip 232MB 12.1% 39.1s 48.9MB/s 9.2s 208.0MB/s
lbzip2 (x4) 188MB 9.9% 42.0s 45.6MB/s 13.2s 144.9MB/s
pbzip2 (x4) 189MB 9.9% 117.5s 16.3MB/s 20.1s 95.2MB/s
bzip2 189MB 9.9% 273.4s 7.0MB/s 42.8s 44.7MB/s
pixz (x4) 132MB 6.9% 456.3s 4.2MB/s 7.9s 242.2MB/s
xz 132MB 6.9% 1027.8s 1.9MB/s 17.3s 110.6MB/s
brotli (q11) 141MB 7.4% 4979.2s 0.4MB/s 3.6s 531.6MB/s
Если 16 ядер вашего сервера достаточно простаивают, чтобы все их можно было использовать для сжатия, pbzip2
это, вероятно, даст вам очень значительное ускорение. Но вам нужна еще большая скорость, и вы можете терпеть файлы размером ~ 20%, gzip
это, вероятно, ваш лучший выбор.
Обновление: я добавил brotli
(см. Ответ TOOGAMs) результаты в таблицу. brotli
Настройка качества сжатия с имеет очень большое влияние на степень сжатия и скорости, так что я добавил три параметра ( q0
, q1
и q11
). По умолчанию q11
, но это очень медленно, и все еще хуже, чем xz
. q1
выглядит очень хорошо, хотя; такой же коэффициент сжатия, как gzip
и в 4-5 раз быстрее!
Обновление: добавлено lbzip2
(см. Комментарий gmathts) и zstd
(комментарий Джонни) к таблице и отсортировано по скорости сжатия. lbzip2
ставит bzip2
семью обратно в управлении за счет сжатия в три раза быстрее, чем pbzip2
с большим коэффициентом сжатия! zstd
также выглядит разумно, но побежден и brotli (q1)
в соотношении и в скорости.
Мой первоначальный вывод о gzip
том, что лучшим вариантом является равнина, начинает выглядеть почти глупо. Хотя для повсеместности, это все еще не может быть разбито;)