Il existe de nombreux algorithmes de compression et l' bzip2
un des plus lents. Plain gzip
tend à être significativement plus rapide, à une compression généralement pas bien pire. Quand la vitesse est la plus importante, lzop
c'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_dumpall
commande 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, pbzip2
cela 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, gzip
c'est probablement votre meilleur pari.
Mise à jour: j'ai ajouté brotli
(voir la réponse TOOGAMs) au tableau. brotli
s 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
, q1
et q11
). La valeur par défaut est q11
, mais elle est extrêmement lente et encore pire que xz
. q1
semble 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. lbzip2
remet la bzip2
famille dans la course en compressant trois fois plus vite pbzip2
qu'avec un excellent taux de compression! zstd
semble également raisonnable mais est battu brotli (q1)
à la fois dans le rapport et la vitesse.
Ma conclusion initiale que la plaine gzip
est le meilleur pari commence à paraître presque idiote. Bien que pour l'ubiquité, il ne peut toujours pas être battu;)