Навколо існує багато алгоритмів стиснення та 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
(див. Коментар до гматтів) та zstd
(коментар Джонні) до таблиці та сортувало його за швидкістю стиснення. lbzip2
ставить bzip2
сім'ю назад в управлінні за рахунок стиснення в три рази швидше, ніжpbzip2
ніж з великим коефіцієнтом стиснення! zstd
також виглядає розумним, але його б'ють і brotli (q1)
в співвідношенні, і в швидкості.
Мій початковий висновок про те, що звичайна gzip
найкраща ставка, починає виглядати майже нерозумно. Хоча щодо повсюдності, її все одно не можна перемогти;)