Il existe de nombreux algorithmes de compression et l' bzip2un des plus lents. Plain gziptend à être significativement plus rapide, à une compression généralement pas bien pire. Quand la vitesse est la plus importante, lzopc'est ma préférée. Mauvaise compression, mais oh si vite.
J'ai décidé de m'amuser et de comparer quelques algorithmes, y compris leurs implémentations parallèles. Le fichier d'entrée est la sortie de la pg_dumpallcommande sur mon poste de travail, un fichier SQL de 1913 Mo. Le matériel est un ancien i5 quadricœur. Les heures sont des heures d'horloge murale de la compression uniquement. Les implémentations parallèles sont définies pour utiliser les 4 cœurs. Tableau trié par vitesse de compression.
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 les 16 cœurs de votre serveur sont suffisamment inactifs pour que tous puissent être utilisés pour la compression, pbzip2cela vous donnera probablement une accélération très importante. Mais vous avez encore besoin de plus de vitesse et vous pouvez tolérer ~ 20% de fichiers plus gros, gzipc'est probablement votre meilleur pari.
Mise à jour: j'ai ajouté brotli(voir la réponse TOOGAMs) au tableau. brotlis réglage de la qualité de compression a un impact très important sur le taux de compression et la vitesse, alors j'ai ajouté trois paramètres ( q0, q1et q11). La valeur par défaut est q11, mais elle est extrêmement lente et encore pire que xz. q1semble très bien cependant; le même taux de compression gzip, mais 4 à 5 fois plus rapide!
Mise à jour: ajouté lbzip2(voir le commentaire de gmathts) et zstd(le commentaire de Johnny) au tableau, et trié par vitesse de compression. lbzip2remet la bzip2famille dans la course en compressant trois fois plus vite pbzip2qu'avec un excellent taux de compression! zstdsemble également raisonnable mais est battu brotli (q1)à la fois dans le rapport et la vitesse.
Ma conclusion initiale que la plaine gzipest le meilleur pari commence à paraître presque idiote. Bien que pour l'ubiquité, il ne peut toujours pas être battu;)