If-Koubou

Mengapa Zip Dapat Mengkompres File Tunggal Lebih Baik daripada Banyak File dengan Konten yang Sama?

Mengapa Zip Dapat Mengkompres File Tunggal Lebih Baik daripada Banyak File dengan Konten yang Sama? (Bagaimana caranya)

Mampu memadatkan file kami sehingga lebih mudah untuk berbagi dan / atau memindahkannya dapat mempermudah kehidupan elektronik kami, tetapi terkadang kami mungkin melihat hasil pengukuran yang aneh atau tidak terduga setelah kami memadatkannya. Mengapa demikian? Posting SuperUser Q & A saat ini memiliki jawaban atas pertanyaan pembaca yang bingung.

Sesi Tanya & Jawab hari ini hadir untuk memberi kami hak milik SuperUser-sub divisi Stack Exchange, pengelompokan situs web Q & A berbasis komunitas.

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

Pertanyaan

Pembaca SuperUser, sixtyfootersdude, ingin mengetahui mengapa zip dapat mengompres file tunggal lebih baik daripada beberapa file dengan jenis konten yang sama:

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

Metode 1: Jangan Kompres Mereka

Hasil:

Metode 2: Zip Setiap File Secara Terpisah dan Kirimi Dia 10.000 File XML Zip

Perintah:

Hasil:

Metode 3: Buat File Zip Tunggal Yang Mengandung Semua 10.000 File XML

Perintah:

Hasil:

Metode 4: Gabungkan File Ke dalam Satu File dan Zip Ini

Perintah:

Hasil:

Pertanyaan

  • Mengapa saya mendapatkan hasil yang jauh lebih baik ketika saya hanya meng-upload file tunggal?
  • Saya berharap mendapatkan hasil yang jauh lebih baik dengan 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

Meta Data

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 masih ada sekitar sepuluh MB ruang yang tidak dapat dijelaskan.

Mengapa zip dapat memampatkan file tunggal lebih baik daripada beberapa file dengan jenis konten yang sama?

Jawabannya

Kontributor SuperUser Alan Shutko dan Aganju punya jawabannya untuk kami. Pertama, Alan Shutko:

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

Sederhana, jika Anda memadatkan satu file, kamus yang memetakan (pendek) kode ke (lebih panjang) pola-pola selalu terdapat dalam setiap file zip yang dihasilkan; jika Anda mengepos satu file panjang, kamus tersebut 'digunakan kembali' dan tumbuh bahkan lebih efektif di semua konten.

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

Dilanjutkan dengan jawaban dari Aganju:

Dalam zip, setiap file dikompresi secara terpisah. Kebalikannya adalah kompresi padat, yaitu, file dikompresi bersama. 7-zip dan Rar menggunakan kompresi solid secara default. Gzip dan Bzip2 tidak dapat mengkompresi banyak file, jadi Tar digunakan lebih dulu, memiliki efek yang sama dengan kompresi padat.

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

Misalnya, jika file berisi string “”Dan kompresor telah menemukan string itu di file lain, itu akan menggantikannya 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.

Memiliki sesuatu untuk ditambahkan ke penjelasan? Bicaralah di komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang paham teknologi lainnya? Lihat diskusi lengkap di sini.