Hay muchos algoritmos de compresión, y bzip2
es uno de los más lentos. La llanura gzip
tiende a ser significativamente más rápida, generalmente con una compresión no mucho peor. Cuando la velocidad es lo más importante, lzop
es mi favorito. Mala compresión, pero tan rápido.
Decidí divertirme un poco y comparar algunos algoritmos, incluidas sus implementaciones paralelas. El archivo de entrada es la salida del pg_dumpall
comando en mi estación de trabajo, un archivo SQL de 1913 MB. El hardware es un i5 de cuatro núcleos más antiguo. Los tiempos son tiempos de reloj de pared de solo la compresión. Las implementaciones paralelas están configuradas para usar los 4 núcleos. Tabla ordenada por velocidad de compresión.
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
Si los 16 núcleos de su servidor están lo suficientemente inactivos como para que todos puedan usarse para la compresión, pbzip2
probablemente le dará una aceleración muy significativa. Pero aún necesita más velocidad y puede tolerar archivos ~ 20% más grandes, gzip
es probablemente su mejor opción.
Actualización: agregué brotli
(ver respuesta de TOOGAM) resultados a la tabla. brotli
s ajuste de calidad de compresión tiene un impacto muy grande en relación de compresión y la velocidad, por lo que añade tres ajustes ( q0
, q1
y q11
). El valor predeterminado es q11
, pero es extremadamente lento y aún peor xz
. q1
aunque se ve muy bien; ¡la misma relación de compresión que gzip
, pero 4-5 veces más rápido!
Actualización: Se agregó lbzip2
(ver comentario de gmathts) y zstd
(comentario de Johnny) a la tabla, y se ordenó por velocidad de compresión. lbzip2
¡pone a la bzip2
familia nuevamente en funcionamiento al comprimir tres veces más rápido que pbzip2
con una excelente relación de compresión! zstd
También parece razonable, pero es superado brotli (q1)
tanto en relación como en velocidad.
Mi conclusión original de que gzip
es la mejor apuesta es comenzar a parecer casi tonto. Aunque por ubicuidad, aún no se puede superar;)