Berapa ukuran terbesar yang bisa didekompresi oleh gzip (misalnya 10kb)?
sumber
Berapa ukuran terbesar yang bisa didekompresi oleh gzip (misalnya 10kb)?
Ini sangat tergantung pada data yang dikompres. Pengujian cepat dengan file 1Gb yang penuh dengan nol memberikan ukuran terkompresi ~ 120Kb, sehingga file 10Kb Anda berpotensi berkembang menjadi ~ 85Mbytes.
Jika data memiliki redundansi yang rendah untuk memulai, misalnya, arsip berisi file gambar dalam format yang dikompresi secara asli (gif, jpg, png, ...), maka gzip dapat menambahkan kompresi lebih lanjut sama sekali. Untuk file biner seperti program yang dapat dieksekusi, Anda mungkin melihat kompresi 2: 1, untuk teks biasa, HTML atau markup lainnya 3: 1 atau 4: 1 atau lebih tidak mungkin. Anda mungkin melihat 10: 1 dalam beberapa kasus tetapi ~ 8700: 1 terlihat dengan file yang diisi dengan simbol tunggal adalah sesuatu yang Anda tidak akan melihat di luar keadaan buatan yang serupa.
Anda dapat memeriksa berapa banyak data yang akan dihasilkan dari membongkar file gzip, tanpa benar-benar menulis konten yang tidak dikompres ke disk, dengan gunzip -c file.gz | wc --bytes
- ini akan membuka kompresi file tetapi tidak menyimpan hasilnya, alih-alih meneruskannya ke wc
yang akan menghitung jumlah byte saat mereka lewat lalu buang mereka. Jika konten terkompresi adalah file tar yang berisi banyak file kecil Anda mungkin menemukan bahwa ruang disk yang dibutuhkan lebih banyak untuk membongkar arsip lengkap, tetapi dalam sebagian besar keadaan, jumlah yang dikembalikan dari gunzip
hasil perpipaan melalui wc
akan seakurat yang Anda butuhkan.
phpinfo()
, kompres dengan sangat baik. Informasi teknis dalam output itu mengandung lebih banyak pengulangan langsung daripada potongan rata-rata bahasa alami juga, dan distribusi alfabet mungkin kurang lancar yang bisa membantu tahap Huffman mendapatkan hasil yang lebih baik.Biasanya Anda tidak mendapatkan kompresi lebih dari 95% (sehingga data gzipped 10kB akan terdekompresi menjadi ~ 200kB), tetapi ada file yang dibuat khusus yang berkembang secara eksponensial. Carilah
42.zip
, itu mendekompres ke beberapa petabyte (tidak berarti) data.sumber
Dikutip kata demi kata dari https://stackoverflow.com/a/16794960/293815
Rasio kompresi maksimum dari format deflate adalah 1032: 1. Ini karena proses terpanjang yang dapat dikodekan adalah 258 byte. Setidaknya diperlukan dua bit untuk setiap proses tersebut (satu bit untuk kode panjang dan satu bit untuk kode jarak), maka 4 * 258 = 1032 byte yang tidak terkompresi dapat dikodekan per satu byte terkompresi.
Anda bisa mendapatkan lebih banyak kompresi dengan gzip hasil gzip. Biasanya itu tidak meningkatkan kompresi, tetapi untuk berjalan sangat lama itu bisa.
By the way, pendekatan LZ77 yang digunakan oleh deflate lebih umum daripada pengkodean run-length. Alih-alih hanya panjang, pasangan panjang / jarak digunakan. Ini memungkinkan menyalin string dari jarak tertentu ke belakang, atau mereplikasi byte sebagai run-length untuk jarak satu, atau mereplikasi tiga kali lipat byte dengan jarak tiga, dll.
sumber
Rasio kompresi dari semua algoritma kompresi akan menjadi fungsi dari data yang dikompresi (selain panjang data itu).
Berikut ini adalah analisis di MaximumCompression ,
Lihatlah salah satu sampel seperti,
Ringkasan dari beberapa tes benchmark kompresi file
sumber
File besar yang hanya berisi satu simbol akan memampatkan dengan sangat baik.
sumber
10 MB nol dalam file, kompres dengan gzip -9 hingga 10217. Jadi rasio maksimal terlihat sekitar 1000x.
sumber
Jawaban untuk pertanyaan Anda, tergantung inputnya. Untuk memberi Anda gambaran bagaimana kompresi dilakukan, tonton video enam menit ini.
https://www.youtube.com/watch?v=ZdooBTdW5bM
Apa yang harus Anda dapatkan dari itu adalah bahwa tingkat kompresi tergantung pada frekuensi masing-masing karakter, sehingga tidak ada tingkat maks generel, itu tergantung pada input, untuk teks bahasa Inggris sekitar 65 persen.
sumber