Tôi đã biết gzip trong nhiều năm, gần đây tôi thấy bzip đang được sử dụng tại nơi làm việc. Về cơ bản chúng có tương đương với nhau không, hay có những ưu và nhược điểm đáng kể đối với một trong số chúng so với cái kia?
Tôi đã biết gzip trong nhiều năm, gần đây tôi thấy bzip đang được sử dụng tại nơi làm việc. Về cơ bản chúng có tương đương với nhau không, hay có những ưu và nhược điểm đáng kể đối với một trong số chúng so với cái kia?
Câu trả lời:
Gzip và bzip2 tương đương về chức năng. (Đã từng có một bzip, nhưng dường như nó đã biến mất hoàn toàn khỏi bộ mặt của thế giới.) Các định dạng nén phổ biến khác là zip, rar và 7z; cả ba đều thực hiện cả nén và lưu trữ (đóng gói nhiều tệp thành một). Dưới đây là một số xếp hạng tiêu biểu về tốc độ, tính khả dụng và tỷ lệ nén điển hình (lưu ý rằng các xếp hạng này hơi chủ quan, đừng coi chúng là tin lành):
decompression speed (fast > slow): gzip, zip > 7z > rar > bzip2
compression speed (fast > slow): gzip, zip > bzip2 > 7z > rar
compression ratio (better > worse): 7z > rar, bzip2 > gzip > zip
availability (unix): gzip > bzip2 > zip > 7z > rar
availability (windows): zip > rar > 7z > gzip, bzip2
Như bạn có thể thấy, không có một người chiến thắng rõ ràng. Nếu bạn muốn dựa vào các chương trình có khả năng đã được cài đặt, hãy sử dụng zip trên Windows (hoặc nếu có thể, tự giải nén tài liệu lưu trữ, vì Windows không cung cấp bất kỳ chương trình nào trong số này) và gzip trên unix. Nếu bạn muốn nén tối đa, sử dụng 7z.
Rar cũng có nhược điểm là, theo như tôi biết, không có phần mềm miễn phí nào tạo ra tài liệu lưu trữ rar hoặc có thể giải nén tất cả tài liệu lưu trữ rar. Các định dạng khác có triển khai miễn phí và không yêu cầu bằng sáng chế (nghiêm trọng).
bzip
biến mất vì nó đang sử dụng mã hóa thuật toán được cấp bằng sáng chế. Vì bằng sáng chế, nó đã được thiết kế lại để sử dụng mã Huffman thay thế. Trong quá trình thiết kế lại này, các tính năng và cải tiến mới đã được thêm vào. Điều cơ bản làm cho nó trở thành một thuật toán nén duy nhất, mặc dù, biến đổi Burrows của Wheeler, vẫn giữ nguyên trong cả hai phiên bản.
Theo như tôi có thể nói, gzip nói chung nhanh hơn, trong khi tổng thể bzip tạo ra khả năng nén (nhỏ hơn) tốt hơn.
Các thuật toán có thời gian, bộ nhớ, sự đánh đổi không gian khác nhau. Hãy nhớ rằng các thuật toán này đã được viết cách đây khá lâu và điện thoại thông minh của bạn có CPU nhiều gấp nhiều lần so với máy tính để bàn ngày đó.
Lựa chọn của bạn là giữa tính phổ quát (.gz) và nén hơn một chút (.bz2). Chỉ có bạn có thể nói mà bạn quan tâm nhiều hơn.
Một lợi thế của .gz là nó có thể nén một luồng, một chuỗi mà bạn không thể nhìn ra phía sau. Điều này làm cho nó trở thành máy nén chính thức của các luồng http. Tôi cần sử dụng gzip một lần vì điều đó, nhưng không chắc bạn sẽ cần phải nghĩ về nó.
Dưới đây là danh sách các trang web kiểm tra thuật toán nén, để tìm chỉ bzip và gzip, bạn sẽ phải thực hiện một số hoạt động đào, nhưng hầu hết các trang web sẽ liệt kê các đặc điểm của thuật toán. Bằng cách này bạn có thể so sánh những gì quan trọng với bạn, kích thước (tỷ lệ nén), thời gian, bộ nhớ, cpu.
http://www.maximumcompression.com/benchmark/benchmark.php
Theo kinh nghiệm của tôi, bzip đã cung cấp tỷ lệ nén tốt hơn so với gzip. Cộng với 7zip là trình quản lý và thuật toán bzip, 7zip có thể sử dụng bộ xử lý đa lõi.
Mỗi http://tukaani.org/lzma/benchmark.html , gzip nén nhanh gấp đôi so với bzip2 và giải nén nhanh gấp mười lần.
Ví dụ: để sử dụng với bộ nhớ đệm s3, trên travis, v.v., nơi bạn muốn tốc độ nén / giải nén, không chỉ kích thước nhỏ, gzip có thể là một sự đánh đổi tốt.