Hay muchos algoritmos de compresión, y bzip2es uno de los más lentos. La llanura gziptiende a ser significativamente más rápida, generalmente con una compresión no mucho peor. Cuando la velocidad es lo más importante, lzopes 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_dumpallcomando 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, pbzip2probablemente le dará una aceleración muy significativa. Pero aún necesita más velocidad y puede tolerar archivos ~ 20% más grandes, gzipes probablemente su mejor opción.
Actualización: agregué brotli(ver respuesta de TOOGAM) resultados a la tabla. brotlis 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, q1y q11). El valor predeterminado es q11, pero es extremadamente lento y aún peor xz. q1aunque 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 bzip2familia nuevamente en funcionamiento al comprimir tres veces más rápido que pbzip2con una excelente relación de compresión! zstdTambién parece razonable, pero es superado brotli (q1)tanto en relación como en velocidad.
Mi conclusión original de que gzipes la mejor apuesta es comenzar a parecer casi tonto. Aunque por ubicuidad, aún no se puede superar;)