Câu trả lời:
Nó phụ thuộc rất nhiều vào dữ liệu được nén. Thử nghiệm nhanh với tệp 1Gb chứa đầy số không cho kích thước nén ~ 120Kb, vì vậy tệp 10Kb của bạn có thể có khả năng mở rộng thành ~ 85Mbyte.
Ví dụ, nếu dữ liệu có độ dự phòng thấp, kho lưu trữ chứa các tệp hình ảnh ở định dạng được nén nguyên gốc (gif, jpg, png, ...), thì gzip có thể không nén thêm nữa. Đối với các tệp nhị phân như tệp thực thi chương trình, bạn có thể thấy nén tối đa 2: 1, đối với văn bản thuần, HTML hoặc các đánh dấu khác 3: 1 hoặc 4: 1 trở lên là không thể xảy ra. Bạn có thể thấy 10: 1 trong một số trường hợp nhưng ~ 8700: 1 được xem với một tệp chứa đầy một ký hiệu là thứ bạn sẽ không thấy bên ngoài các trường hợp nhân tạo tương tự.
Bạn có thể kiểm tra lượng dữ liệu sẽ dẫn đến việc giải nén tệp gzip, mà không thực sự ghi nội dung không nén của nó vào đĩa, với gunzip -c file.gz | wc --bytes
- điều này sẽ giải nén tệp nhưng không lưu trữ kết quả, thay vào đó, chúng wc
sẽ đếm số byte khi chúng truyền sau đó loại bỏ chúng. Nếu nội dung nén là một tệp tar chứa nhiều tệp nhỏ, bạn có thể thấy rằng cần nhiều dung lượng đĩa hơn để giải nén toàn bộ kho lưu trữ, nhưng trong hầu hết các trường hợp, số lượng được trả về từ gunzip
đầu ra đường ống wc
sẽ chính xác như bạn cần.
phpinfo()
, nén rất tốt. Thông tin kỹ thuật trong đầu ra đó chứa nhiều sự lặp lại trực tiếp hơn so với khối ngôn ngữ tự nhiên trung bình cũng vậy, và phân phối bảng chữ cái có lẽ kém trơn tru hơn có thể giúp giai đoạn Huffman có kết quả tốt hơn.
Thông thường, bạn không được nén hơn 95% (để dữ liệu được nén 10kB sẽ giải nén thành ~ 200kB), nhưng có những tệp được chế tạo đặc biệt mở rộng theo cấp số nhân. Hãy tìm kiếm 42.zip
, nó giải nén đến vài petabyte dữ liệu (vô nghĩa).
Trích dẫn nguyên văn từ https://stackoverflow.com/a/16794960/293815
Tỷ lệ nén tối đa của định dạng khử là 1032: 1. Điều này là do lần chạy dài nhất có thể được mã hóa là 258 byte. Ít nhất hai bit được yêu cầu cho mỗi lần chạy như vậy (một bit cho mã độ dài và một bit cho mã khoảng cách), do đó 4 * 258 = 1032 byte không nén có thể được mã hóa trên một byte nén.
Bạn có thể nhận được nhiều nén hơn bằng cách gzipping kết quả của gzip. Thông thường, điều đó không cải thiện khả năng nén, nhưng trong thời gian dài thì có thể.
Nhân tiện, cách tiếp cận LZ77 được sử dụng bởi deflate là tổng quát hơn so với mã hóa chiều dài chạy. Thay vì chỉ một chiều dài, một cặp chiều dài / khoảng cách được sử dụng. Điều này cho phép sao chép một chuỗi từ một khoảng cách trở lại hoặc sao chép một byte như trong chiều dài chạy cho khoảng cách một hoặc sao chép ba lần byte với khoảng cách ba, v.v.
Tỷ lệ nén của bất kỳ thuật toán nén nào sẽ là một hàm của dữ liệu được nén (bên cạnh độ dài của dữ liệu đó).
Đây là một phân tích tại MaximumCompression ,
Hãy xem một trong các mẫu như,
Tóm tắt các bài kiểm tra chuẩn nén nhiều tệp
Loại tệp: Nhiều loại tệp (tổng cộng 46) Số tệp cần nén trong thử nghiệm này: 510 Tổng kích thước tệp (byte): 316.355.757 Kích thước tệp trung bình (byte): 620,305 Tệp lớn nhất (byte): 18,403,071 Tệp nhỏ nhất (byte): 3,554
Câu trả lời cho câu hỏi của bạn, phụ thuộc vào đầu vào. Để cho bạn biết cách nén được thực hiện, hãy xem video sáu phút này.
https://www.youtube.com/watch?v=ZdooBTdW5bM
Những gì bạn nên nhận được từ nó là tốc độ nén phụ thuộc vào tần số của mỗi ký tự, do đó không có tốc độ tối đa chung, nó phụ thuộc vào đầu vào, đối với văn bản tiếng Anh là khoảng 65 phần trăm.