Untuk mendistribusikan arsip melalui Internet, hal-hal berikut umumnya menjadi prioritas:
- Rasio kompresi (yaitu, seberapa kecil kompresor membuat data);
- Waktu dekompresi (persyaratan CPU);
- Persyaratan memori dekompresi; dan
- Kompatibilitas (seberapa luas program dekompresi)
Memori kompresi & persyaratan CPU tidak terlalu penting, karena Anda dapat menggunakan mesin cepat besar untuk itu, dan Anda hanya perlu melakukannya sekali.
Dibandingkan dengan bzip2, xz memiliki rasio kompresi yang lebih baik dan waktu dekompresi yang lebih rendah (lebih baik). Namun, pada pengaturan kompresi yang biasanya digunakan - membutuhkan lebih banyak memori untuk didekompresi [1] dan agak kurang luas. Gzip menggunakan lebih sedikit memori daripada keduanya.
Jadi, arsip format gzip dan xz diposting, memungkinkan Anda untuk memilih:
- Perlu mendekompres pada mesin dengan memori yang sangat terbatas (<32 MB): gzip. Diberikan, sangat tidak mungkin ketika berbicara tentang sumber kernel.
- Perlu mendekompresi alat minimal yang tersedia: gzip
- Ingin menghemat waktu pengunduhan dan / atau bandwidth: xz
Sebenarnya tidak ada kombinasi faktor realistis yang membuat Anda memilih bzip2. Jadi itu dihapus.
Saya melihat perbandingan kompresi di posting blog . Saya tidak mencoba mereplikasi hasil, dan saya menduga beberapa di antaranya telah berubah (kebanyakan, saya berharap xz
telah membaik, sebagai yang terbaru.)
(Ada beberapa skenario khusus di mana implementasi bzip2 yang baik mungkin lebih disukai daripada xz: bzip2 dapat memampatkan file dengan banyak nol dan urutan genom DNA lebih baik daripada xz. Versi xz yang lebih baru sekarang memiliki mode blok (opsional) yang memungkinkan pemulihan data setelah titik korupsi dan kompresi paralel dan [dalam teori] dekompresi. Sebelumnya, hanya bzip2 yang menawarkan ini. [2] Namun tidak ada yang relevan untuk distribusi kernel)
1: Dalam ukuran arsip, xz -3
ada sekitar bzip -9
. Kemudian xz menggunakan lebih sedikit memori untuk melakukan dekompresi. Tetapi xz -9
(seperti, misalnya, digunakan untuk tarbal kernel Linux) menggunakan lebih dari bzip -9
. (Dan bahkan xz -0
membutuhkan lebih dari gzip -9
).
2: Perubahan Luas Sistem F21: lbzip2 sebagai implementasi bzip2 default
Pertama-tama, pertanyaan ini tidak terkait langsung dengan
tar
. Tar hanya membuat arsip yang tidak terkompresi, kompresi kemudian diterapkan kemudian.Gzip dikenal relatif cepat jika dibandingkan dengan LZMA2 dan bzip2. Jika kecepatan penting,
gzip
(terutama implementasi multithreadedpigz
) seringkali merupakan kompromi yang baik antara kecepatan kompresi dan rasio kompresi. Meskipun ada alternatif jika kecepatan adalah masalah (misalnya LZ4).Namun, jika rasio kompresi yang tinggi diinginkan, LZMA2 mengalahkan
bzip2
di hampir setiap aspek. Kecepatan kompresi sering kali lebih lambat, tetapi lebih cepat terurai dan memberikan rasio kompresi yang lebih baik dengan biaya penggunaan memori yang lebih tinggi.Tidak ada banyak alasan untuk menggunakan
bzip2
lagi, kecuali kompatibilitas mundur. Selain itu, LZMA2 dirancang dengan multithreading dalam pikiran dan banyak implementasi secara default menggunakan CPU multicore (sayangnyaxz
di Linux belum melakukan ini, belum). Ini masuk akal karena kecepatan clock tidak akan meningkat lagi tetapi jumlah core akan bertambah.Ada
bzip2
implementasi multithreaded (misalnyapbzip
), tetapi mereka sering tidak diinstal secara default. Perhatikan juga bahwa multithreadedbzip2
hanya benar-benar membayar saat mengompresi sedangkan dekompresi menggunakan utas tunggal jika file dikompresi menggunakan ulir tunggalbzip2
, berbeda dengan LZMA2.bzip2
Varian paralel hanya dapat memanfaatkan CPU multicore jika file dikompresi menggunakanbzip2
versi paralel , yang seringkali tidak demikian.sumber
z
opsi.xz
akan multithreaded secara default sehinggapixz
instalasi tidak diperlukan di masa depan. Pada beberapa platform,xz
threading sudah didukung. Sedangkanbzip2
tidak mungkin multithreaded karena format tidak dirancang dengan multithreading dalam pikiran. Selain itu,pbzip2
hanya mempercepat dekompresi jika file telah dikompresi menggunakanpbzip2
yang sering tidak terjadi.Jawaban singkat : xz lebih efisien dalam hal rasio kompresi. Sehingga menghemat ruang disk dan mengoptimalkan transfer melalui jaringan.
Anda dapat melihat Tolok Ukur Cepat ini untuk mengetahui perbedaannya dengan tes praktis.
sumber
LZMA2 adalah sistem kompresi blok sedangkan gzip tidak. Ini berarti bahwa LZMA2 cocok untuk multi-threading. Juga, jika korupsi terjadi dalam arsip, Anda biasanya dapat memulihkan data dari blok berikutnya dengan LZMA2 tetapi Anda tidak dapat melakukan ini dengan gzip. Dalam praktiknya, Anda kehilangan seluruh arsip dengan gzip setelah blok rusak. Dengan arsip LZMA2, Anda hanya kehilangan file yang dipengaruhi oleh blok yang rusak. Ini penting dalam arsip yang lebih besar dengan banyak file.
sumber