LZMA
ฉันเลือกสำหรับ มันมีค่าใช้จ่ายไบต์ที่เล็กที่สุดและมีอัตราส่วนการบีบอัดที่แข็งแกร่ง การเปรียบเทียบระหว่าง ZIP และ LZMA: ฉันสร้างไฟล์สองไฟล์seq.txt
ด้วยรหัส PHP
$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str);
ซึ่งเก็บบล็อคการทำซ้ำของ 0..9 หลัก ~ 1Mb ของข้อมูลและrnd.txt
ด้วยรหัส 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);
ซึ่งเก็บบล็อคแบบสุ่มที่ 0..9 หลัก ~ 1Mb ของข้อมูล
ผลการบีบอัด:
- seq.txt, rnd.txt - 1100000 ไบต์
- seq.txt.zip - 2502 ไบต์
- rnd.txt.zip - 515957 ไบต์
- seq.txt.lzma - 257 ไบต์
- rnd.txt.lzma - 484939 ไบต์
อัตราส่วนการบีบอัด:
- ZIP -> "seq.txt" -> 99.772%
- ZIP -> "rnd.txt" -> 53.094%
- LZMA -> "seq.txt" -> 99.976%
- LZMA -> "rnd.txt" -> 55.914%
ดังนั้น LZMA จึงบีบอัดข้อมูลตามลำดับได้อย่างมีประสิทธิภาพมากกว่า ZIP ถึง 0.2%
และสุ่มข้อมูลได้อย่างมีประสิทธิภาพมากกว่า ZIP 2.8%
แน่นอนว่า LZMA ชนะ!