Beranda » bagaimana » Mengapa Zip Mampu Mengkompresi File Tunggal Lebih Baik daripada Banyak File dengan Konten yang Sama?

    Mengapa Zip Mampu Mengkompresi File Tunggal Lebih Baik daripada Banyak File dengan Konten yang Sama?

    Mampu mengompres file kita sehingga lebih mudah untuk berbagi dan / atau memindahkannya dapat membuat kehidupan elektronik kita lebih mudah, tetapi kadang-kadang kita mungkin melihat hasil pengukuran yang aneh atau tidak terduga setelah kita mengompresnya. Mengapa demikian? T&J Super Pengguna hari ini memiliki jawaban untuk pertanyaan pembaca yang bingung.

    Sesi Tanya Jawab hari ini datang kepada kami berkat SuperUser-subdivisi Stack Exchange, pengelompokan situs web Q&A berbasis komunitas.

    Foto milik Jean-Etienne Minh-Duy Poirrier (Flickr).

    Pertanyaan

    SuperUser reader sixtyfootersdude ingin tahu mengapa zip mampu mengompres file tunggal lebih baik daripada banyak file dengan jenis konten yang sama:

    Misalkan saya memiliki 10.000 file XML dan ingin mengirimnya ke teman. Sebelum mengirim mereka, saya ingin mengompres mereka.

    Metode 1: Jangan Kompres Mereka

    Hasil:

    Metode 2: Zip Setiap File Secara terpisah dan Kirim Dia 10.000 File XML Zip

    Perintah:

    Hasil:

    Metode 3: Buat File Zip Tunggal Berisi Semua 10.000 File XML

    Perintah:

    Hasil:

    Metode 4: Menggabungkan File-File Menjadi Satu File dan Zip Itu

    Perintah:

    Hasil:

    Pertanyaan

    • Mengapa saya mendapatkan hasil yang jauh lebih baik ketika saya hanya zip file tunggal?
    • Saya mengharapkan mendapatkan hasil yang lebih baik secara drastis menggunakan metode 3 daripada metode 2, tetapi saya tidak. Kenapa ini?
    • Apakah perilaku ini khusus untuk zip? Jika saya mencoba menggunakan Gzip, apakah saya akan mendapatkan hasil yang berbeda?

    Informasi tambahan

    Data Meta

    Salah satu jawaban yang diberikan menunjukkan bahwa perbedaannya adalah sistem meta data yang disimpan dalam file zip. Saya tidak percaya ini bisa terjadi. Untuk mengujinya, saya melakukan hal berikut:

    File zip yang dihasilkan adalah 1,4 MB. Ini berarti bahwa masih ada sekitar sepuluh MB ruang yang tidak dapat dijelaskan.

    Mengapa zip mampu mengompres file tunggal lebih baik daripada banyak file dengan jenis konten yang sama?

    Jawabannya

    Kontributor SuperUser, Alan Shutko dan Aganju memiliki jawaban untuk kami. Pertama, Alan Shutko:

    Kompresi zip didasarkan pada pola berulang dalam data yang akan dikompresi, dan kompresi menjadi lebih baik semakin lama file, karena semakin banyak pola dapat ditemukan dan digunakan.

    Sederhana, jika Anda mengompres satu file, kamus yang memetakan kode (pendek) ke pola (lebih lama) tentu terkandung dalam setiap file zip yang dihasilkan; jika Anda zip satu file panjang, kamus 'digunakan kembali' dan tumbuh lebih efektif di semua konten.

    Jika file Anda bahkan sedikit mirip (seperti teks selalu), penggunaan kembali 'kamus' menjadi sangat efisien dan hasilnya adalah file zip total yang jauh lebih kecil.

    Diikuti oleh jawaban dari Aganju:

    Dalam zip, setiap file dikompres secara terpisah. Yang sebaliknya adalah kompresi padat, yaitu, file dikompresi bersama. 7-zip dan Rar menggunakan kompresi padat secara default. Gzip dan Bzip2 tidak dapat mengkompres banyak file, jadi Tar digunakan terlebih dahulu, memiliki efek yang sama seperti kompresi padat.

    Karena file xml memiliki struktur yang sama (dan mungkin konten yang serupa), jika file dikompresi bersama maka kompresi akan lebih tinggi.

    Misalnya, jika file berisi string "”Dan kompresor telah menemukan string itu di file lain, itu akan menggantinya dengan pointer kecil ke pertandingan sebelumnya. Jika kompresor tidak menggunakan kompresi padat, kemunculan pertama string dalam file akan dicatat sebagai a harfiah, yang lebih besar.


    Punya sesuatu untuk ditambahkan ke penjelasan? Berbunyi dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang mengerti teknologi lainnya? Lihat utas diskusi lengkap di sini.