Bagaimana 'ukuran kamus' memengaruhi kompresi?

39

Saya tahu bahwa ukuran yang lebih tinggi dapat menyebabkan rasio kompresi yang lebih baik dan sebaliknya. Tetapi apakah ada cara saya dapat memutuskan lebih baik? ... karena ada begitu banyak pilihan 7zip


Sejauh ini saya perhatikan ukuran kamus ≈ ukuran file menghasilkan kompresi optimal. ukuran file
Di sini file ∼8mb test.avimemiliki rasio kompresi yang sama untuk semua ukuran kamus yang lebih besar dari 8mb. Kemudian mulai jatuh.

laggingreflex
sumber
2
Ya, itu karena seluruh file ada di memori. Namun, ini tidak mungkin dilakukan jika berurusan dengan file multi-pertunjukan. Pengembalian investasi mengurangi semakin tinggi Anda pergi. Jika Anda membutuhkan 1% terakhir maka ukuran = ukuran file. Catatan: Bila Anda memiliki data yang jauh lebih besar, atur 128mb + ukuran kamus akan menambah waktu yang dibutuhkan untuk mengompres file secara signifikan.
cybernard

Jawaban:

28

Item berulang disimpan dalam kamus dan kode ditugaskan sebagai pengganti.

INI ADALAH SIMPLIFIKASI YANG LUAR BIASA

aaaaaaaaaaaaaaaaaaaaaaaa  0001
bbbbbbbbbbbbbbbbbbbbbbbb  0002
alsdjl;asjdfkl;asdfjkljj  0003

alih-alih seluruh baris itu hanya menempatkan kode di tempatnya. Semakin besar kamus, semakin banyak kode yang bisa ditangani. Biasanya, ketika kamus menjadi penuh itu mulai kamus yang baru dengan cepat. Ketika memulai yang baru itu kosong dan kode baru ditugaskan untuk pola yang terdeteksi.

Secara umum, semakin besar semakin baik suatu titik. Seluruh kamus disimpan dalam memori sehingga Anda membutuhkan lebih banyak RAM daripada ukuran kamus.

Ukuran kamus tergantung pada kompresibilitas data Anda, jumlah file, ukuran, dan ukuran keseluruhan.

Secara umum, 32MB lebih dari cukup, tetapi jika Anda mengompres banyak file multi-gig maka jumlah yang jauh lebih tinggi dapat digunakan. Kamus yang lebih besar sering membuat proses lebih lambat, tetapi hasilnya dalam file yang lebih kecil.

cybernard
sumber
2
Apakah ukuran yang Anda tetapkan batas untuk ukuran kamus, atau ukuran sebenarnya? Apakah program (khususnya 7-zip) biasanya menentukan dengan cerdas apakah mereka benar-benar perlu mengisi seluruh kamus yang Anda izinkan?
Stan
1
Ya, itu adalah batas. Ketika penuh mereka akan memulai kamus baru, atau dengan cerdas mendorong keluar data lama. Kecuali jika data yang dikompres lebih besar dari ukuran kamus itu akan terisi.
cybernard
@cybernard "itu akan diisi"? Agar jelas, apakah ukuran kamus tetap kurang dari batas ketika itu tidak diisi?
LonnieBest
1
@LonnieBest Ya, kamus mulai benar-benar kosong. Setiap begitu banyak bit / byte membuat entri kamus baru sampai penuh.
cybernard