"Kích thước từ điển" ảnh hưởng đến việc nén như thế nào?


39

Tôi biết rằng kích thước cao hơn có thể dẫn đến tỷ lệ nén tốt hơn và ngược lại. Nhưng có cách nào để tôi có thể quyết định tốt hơn không? .. vì có quá nhiều sự lựa chọn 7zip


Cho đến nay tôi đã nhận thấy kích thước từ điển size kích thước tệp mang lại khả năng nén tối ưu. Kích thước tập tin
Ở đây, tệp ∼8mb test.avicó cùng tỷ lệ nén cho tất cả các kích thước từ điển lớn hơn 8mb. Rồi nó bắt đầu rơi.


2
Vâng, đó là vì toàn bộ tập tin nằm trong bộ nhớ. Tuy nhiên, điều này có thể không thực hiện được nếu xử lý các tệp nhiều gig. Lợi tức đầu tư giảm dần khi bạn đi cao hơn. Nếu bạn cần 1% cuối cùng thì size = size file. Lưu ý: Khi bạn có dữ liệu lớn hơn nhiều, kích thước từ điển 128mb + sẽ tăng thời gian cần thiết để nén tệp đáng kể.
gian mạng

Câu trả lời:


28

Các mục lặp lại được lưu trữ trong một từ điển và một mã được chỉ định thay thế.

ĐÂY LÀ MỘT ĐƠN GIẢN HƠN

aaaaaaaaaaaaaaaaaaaaaaaa  0001
bbbbbbbbbbbbbbbbbbbbbbbb  0002
alsdjl;asjdfkl;asdfjkljj  0003

thay vì toàn bộ dòng nó chỉ đặt mã vào vị trí của nó. Từ điển càng lớn thì càng có nhiều mã có thể xử lý. Thông thường, khi một từ điển đầy, nó sẽ bắt đầu một từ mới. Khi nó bắt đầu một cái mới, nó trống và mã mới được gán cho các mẫu được phát hiện.

Nói chung, càng lớn càng tốt đến một điểm. Toàn bộ từ điển được giữ trong bộ nhớ nên bạn cần nhiều RAM hơn kích thước từ điển.

Kích thước từ điển phụ thuộc vào khả năng nén dữ liệu của bạn, số lượng tệp, kích thước và kích thước tổng thể.

Nói chung, 32mb là quá đủ, nhưng nếu bạn nén nhiều tệp nhiều gig thì có thể sử dụng số cao hơn nhiều. Từ điển lớn hơn thường làm cho quá trình chậm hơn, nhưng kết quả trong một tệp nhỏ hơn.


2
Là kích thước mà bạn đặt giới hạn cho kích thước từ điển, hoặc kích thước thực tế sẽ là? Các chương trình (cụ thể là 7-zip) thường xác định một cách thông minh liệu chúng có thực sự cần điền vào toàn bộ từ điển mà bạn cho phép không?
Stan

1
Vâng, nó là một giới hạn. Khi đầy, họ có thể bắt đầu một từ điển mới hoặc thông minh đưa ra dữ liệu cũ. Trừ khi dữ liệu cần nén lớn hơn kích thước của từ điển sẽ được điền.
gian mạng

@cybernard "nó sẽ được lấp đầy"? Để rõ ràng, kích thước từ điển vẫn còn ít hơn giới hạn khi nó không được điền?
LonnieBest

1
@LonnieBest Vâng, từ điển bắt đầu hoàn toàn trống rỗng. Mỗi rất nhiều bit / byte tạo ra một mục từ điển mới cho đến khi nó đầy.
gian mạng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.