Ci sono molti algoritmi di compressione in giro, ed bzip2è uno di quelli più lenti. La pianura gziptende ad essere significativamente più veloce, di solito con una compressione non molto peggiore. Quando la velocità è la più importante, lzopè la mia preferita. Compressione scadente, ma oh così in fretta.
Ho deciso di divertirmi e confrontare alcuni algoritmi, comprese le loro implementazioni parallele. Il file di input è l'output del pg_dumpallcomando sulla mia workstation, un file SQL di 1913 MB. L'hardware è un vecchio quad-core i5. I tempi sono tempi di orologio da parete della sola compressione. Le implementazioni parallele sono impostate per utilizzare tutti e 4 i core. Tabella ordinata per velocità di compressione.
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
Se i 16 core del tuo server sono abbastanza inattivi da poter essere utilizzati tutti per la compressione, pbzip2probabilmente otterrai una velocità molto significativa. Ma hai ancora bisogno di più velocità e puoi tollerare file con dimensioni maggiori del 20%, gzipè probabilmente la soluzione migliore.
Aggiornamento: ho aggiunto i risultati brotli(vedi risposta TOOGAMs) alla tabella. brotliimpostazione s qualità di compressione ha un grande impatto sul rapporto di compressione e la velocità, così ho aggiunto tre impostazioni ( q0, q1e q11). L'impostazione predefinita è q11, ma è estremamente lenta e ancora peggio di xz. q1sembra molto buono però; lo stesso rapporto di compressione di gzip, ma 4-5 volte più veloce!
Aggiornamento: aggiunto lbzip2(vedi il commento di gmathts) e zstd(il commento di Johnny) alla tabella e ordinato in base alla velocità di compressione. lbzip2rimette in moto la bzip2famiglia comprimendo tre volte più velocemente che pbzip2con un ottimo rapporto di compressione! zstdsembra anche ragionevole ma è battuto brotli (q1)sia nel rapporto che nella velocità.
La mia conclusione originale che gzipla scommessa migliore è iniziare a sembrare quasi sciocca. Anche se per l'ubiquità, non può ancora essere battuto;)