11 poin oleh xguru 2021-03-16 | 4 komentar | Bagikan ke WhatsApp
  • File yang dibuat dengan tar di macOS bisa menjadi 15 kali lebih besar dibanding file yang dibuat dengan fungsi tarfile Python

  • Penyebab: BSD/GNU tar memasukkan file ke dalam arsip terkompresi tanpa urutan tertentu, sehingga rasio kompresi bisa menurun tergantung jenis filenya

→ fungsi tarfile Python menggunakan pengurutan sebagai nilai bawaan

  • Dalam GNU tar, file juga bisa dimasukkan dengan urutan name/inode menggunakan opsi --sort → jika pengurutan diterapkan, rasio kompresinya menjadi sama

4 komentar

 
deadcat 2021-03-16

Saya agak tidak paham, tapi kenapa rasio kompresi berubah ketika pengurutan diterapkan? Rasio kompresi untuk tiap file secara individual seharusnya sama, kan.

 
dalinaum 2021-03-22

Algoritme yang digunakan adalah Deflate. Algoritme ini menyimpan data yang sebelumnya digunakan untuk kompresi di dalam sliding window. Jika kali ini 10 byte diproses, maka 10 byte yang baru diproses itu ditambahkan ke bagian akhir sliding window, dan ukuran sliding window dikelola tetap.

Jika ditemukan isi yang sama dengan yang ada di dalam sliding window, kompresi dilakukan dengan menuliskan LLD (Literal, Length, Distance) sebagai gantinya. Distance menunjukkan mulai dari posisi mana isi yang sama itu berada di sliding window, Length adalah panjang bagian yang sama di sliding window, dan Literal adalah karakter pertama yang tidak sama.

Karena Deflate sangat bergantung pada apa yang tersimpan di dalam sliding window, apakah konten yang mirip baru saja terlihat menjadi hal yang penting. Jika sebelumnya sudah melihat file yang serupa, ada kemungkinan kompresinya bisa menjadi lebih baik.

 
dalinaum 2021-03-22

Silakan lihat slide berikut untuk mengetahui bagaimana cara kompresinya dilakukan. (gzip juga berbasis Deflate.)

https://speakerdeck.com/dalinaum/…

 
xguru 2021-03-16

Karena isi file-file dengan nama yang sama/mirip di dalam folder yang sama cenderung serupa, tingkat kompresinya kemungkinan akan lebih tinggi.

Sepertinya maksudnya adalah bahwa saat mengompresi, cakupan pencarian untuk menemukan kemiripan semacam ini tidak terlalu luas, jadi kalau file-file diurutkan, file-file yang mirip ini akan terkumpul dan kemungkinan terkompresi lebih baik akan lebih tinggi.