Antara xz, gzip, dan bzip2, algoritma kompresi manakah yang paling efisien?


16

Antara xz, gzip, dan bzip2, algoritma kompresi manakah yang memberikan ukuran file terkecil dan kecepatan tercepat saat mengompresi tarball yang cukup besar?


'yang terbaik' seperti pada 'menghasilkan ukuran file terkecil'?
Hennes

Saya tidak tahu, saya sedang berusaha menemukan pertanyaan sehingga saya bisa menambahkan tes saya sebagai jawaban. Saya juga tidak tahu mengapa benda ini ditutup. @Karan
Nathan2055

1
Oh, kenapa ditutup itu mudah. "Terbaik" sangat subyektif dan biasanya mengarah pada diskusi atau jawaban yang tidak konstruktif. Kompresi terbaik dapat berupa ukuran file terkecil, kompresi tercepat, daya paling kecil yang digunakan untuk kompres (misalnya pada laptop), pengaruh paling kecil pada sistem saat mengompresi (mis. Program tapak tunggal kuno dengan hanya menggunakan salah satu inti), ... atau kombinasi dari semua itu.
Hennes

Artikel yang menarik untuk dibaca adalah tomshardware.com/reviews/winrar-winzip-7-zip-magicrar,3436.html (berbasis windows, dan fokus pada 7zip, magicRAR, WinRAR dan WinZip daripada xz, gz atau bz, tapi masih menarik dan memberikan informasi latar belakang).
Hennes

@ Hennes - Saya membersihkan pos untuk menggantikan yang terbaik dengan apa yang saya teliti. Juga, terima kasih untuk artikel yang Anda sebutkan, saya akan membacanya hari ini.
Nathan2055

Jawaban:


15

Dalam tes stres saya, saya memampatkan 464 megabita data menggunakan tiga format yang tercantum. Gzip mengembalikan file 364 MB. Bzip2 mengembalikan file 315 MB. Xz mengembalikan file 254 MB. Saya juga melakukan tes kecepatan sederhana:

Kompresi:

1: Gzip

2: Xz

3: Bzip2 (kipas saya bertiup sedikit saat ini berlangsung, menunjukkan bahwa Athlon II saya cukup tegang)

Dekompresi:

1: Xz

2: Gzip

3: Bzip2

Harap dicatat bahwa semua tes ini dilakukan dengan versi 7-Zip terbaru.

Xz adalah format terbaik untuk kompresi menyeluruh, sedangkan Gzip sangat baik untuk kecepatan. Bzip2 layak untuk rasio kompresinya, meskipun xz mungkin harus digunakan sebagai gantinya.


2
Penelitian yang bagus. Sudahkah Anda mencoba berbagai opsi tingkat kompresi yang ditawarkan oleh (setidaknya) bzip2, misalnya bzip2 -9 <file>?
Aaron Miller

@ AaronMiller - Tidak, apakah mungkin menggunakan yang melalui 7-Zip?
Nathan2055

Tampaknya begitu, meskipun saya tidak yakin sampai sejauh mana: lihat dotnetperls.com/7-zip-examples , bagian "Switch m".
Aaron Miller

7
Karena penasaran, data seperti apa file tes itu?
GeminiDomino

Perhatikan bahwa tipe data yang berbeda akan menghasilkan ukuran terkompresi yang berbeda. Lihat di sini untuk contoh.
Ploni

4

Saya melakukan benchmark sendiri pada instalasi 1.1m Linux vmdk image:

rar    =260MB   comp= 85s   decomp= 5s
7z(p7z)=269MB   comp= 98s   decomp=15s
tar.xz =288MB   comp=400s   decomp=30s
tar.bz2=382MB   comp= 91s   decomp=70s
tar.gz =421MB   comp=181s   decomp= 5s

semua tingkat kompresi pada maks, CPU Intel I7 3740QM, Memori 32GB 1600, sumber dan tujuan pada disk RAM

Saya umumnya menggunakan rar atau 7z untuk pengarsipan file normal seperti dokumen.
dan untuk pengarsipan file sistem saya menggunakan .tar.gz atau .tar.xz dengan file-roller atau tar dengan opsi -z atau -J bersama dengan --preserve untuk kompres secara native dengan tar dan menjaga izin (juga sebagai alternatif .tar.7z atau .tar.rar dapat digunakan)

pembaruan: karena tar hanya mempertahankan izin normal dan bukan ACL, juga .7z plus cadangan dan memulihkan izin dan ACL secara manual melalui getfacl dan sefacl dapat digunakan yang tampaknya menjadi pilihan terbaik untuk pengarsipan file atau pencadangan file sistem karena akan penuh melestarikan izin dan ACL, memiliki checksum, uji integritas dan kemampuan enkripsi, satu-satunya downside adalah bahwa p7zip tidak tersedia di mana-mana


Mahasiswa, apa pilihan rar? Mengapa tidak mencoba lrzip oleh kolivas , ini seharusnya bekerja dengan baik untuk gambar disk virtual.
osgx

Saya bermigrasi dari RAR ke Git dan tarballs untuk file teks dan btrf saya untuk yang lainnya; alasan saya untuk menggunakan RAR bukan kinerja, saya menggunakannya karena fitur seperti catatan pemulihan, checksum 256bit tingkat file terpisah untuk setiap file dan ....
Sudoer

3

Saya pikir artikel ini memberikan hasil yang sangat menarik.

http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LX4_vs_LZO

Format yang paling efisien ukurannya adalah xz dan lzma, keduanya dengan parameter -e disahkan.

Algoritma tercepat adalah sejauh lzop dan lz4 yang dapat menghasilkan tingkat kompresi tidak terlalu jauh dari gzip dalam 1,3 detik sementara gzip mengambil 8,1 detik. Rasio kompresi adalah 2,8 untuk lz4 dan 3,7 untuk gzip.

Berikut adalah beberapa hasil yang saya ekstrak dari artikel ini:

  • Gzip: 8.1s @ 3.7

  • lz4: 1.3s @ 2.8

  • xz: 32.2s @ 5.43

  • xz -e: 6m40 @ 7.063

  • xz: 4m51s @ 7.063

Jadi, jika Anda benar-benar membutuhkan kecepatan, lz4 mengagumkan dan masih memberikan rasio kompresi 2,8.

Jika Anda sangat membutuhkan cadangan byte, xz pada level kompresi maksimum (9) melakukan pekerjaan terbaik untuk file teks seperti sumber kernel. Namun, ini sangat panjang dan membutuhkan banyak memori.

Yang bagus di mana diperlukan untuk meminimalkan dampak pada waktu DAN ruang adalah gzip. Ini yang akan saya gunakan untuk membuat cadangan harian manual dari lingkungan produksi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.