J'opte pour un LZMA
. Il a le plus petit octet de surcharge et a un fort taux de compression. Comparaison entre ZIP et LZMA:
J'ai généré deux fichiers seq.txt
avec du code PHP
$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str);
qui contient des blocs répétés de 0,9 chiffres ~ 1 Mo de données
et rnd.txt
avec du code PHP
$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[rand(0,9)].($i%10==9 ? "\n":""); file_put_contents('rnd.txt', $str);
qui contient des blocs aléatoires de 0,9 chiffres ~ 1 Mo de données.
Résultats de la compression:
- seq.txt, rnd.txt - 1100000 octets
- seq.txt.zip - 2502 octets
- rnd.txt.zip - 515957 octets
- seq.txt.lzma - 257 octets
- rnd.txt.lzma - 484939 octets
Taux de compression:
- ZIP - & gt; "seq.txt" - & gt; 99.772%
- ZIP - & gt; "rnd.txt" - & gt; 53,094%
- LZMA - & gt; "seq.txt" - & gt; 99.976%
- LZMA - & gt; "rnd.txt" - & gt; 55.914%
Ainsi, LZMA a compressé les données séquentielles de 0,2% plus efficacement que les fichiers ZIP et les données aléatoires de 2,8% plus efficacement que ZIP.
Bien sûr, LZMA gagne!