3 điểm bởi GN⁺ 2025-02-03 | 1 bình luận | Chia sẻ qua WhatsApp
  • BZip3 là phiên bản kế nhiệm của BZip2, cung cấp tỷ lệ nén và hiệu năng cao hơn.
  • Sử dụng bộ mã hóa entropy trộn ngữ cảnh Order-0, mã Burrows-Wheeler transform tốc độ cao, cùng với RLE và các lượt xử lý Lempel Ziv+Prediction dựa trên đối sánh chuỗi kiểu LZ77 và mô hình hóa ngữ cảnh kiểu PPM
  • Rất phù hợp để nén văn bản hoặc mã nguồn.
  • Benchmark trên mã nguồn Perl
    • Tải xuống và giải nén tất cả các phiên bản của Perl5, sau đó thử nghiệm nén các tệp .tar bằng nhiều trình nén khác nhau
    • BZip3 cho thấy hiệu năng nén tốt hơn so với các trình nén khác ở nhiều cấu hình khác nhau.
    • Ở thời gian giải nén, BZip3 cũng thể hiện hiệu năng vượt trội nhờ xử lý song song.
  • Tuyên bố miễn trừ trách nhiệm
    • Không chịu trách nhiệm về mất mát dữ liệu phát sinh do sử dụng BZip3.
    • Hiệu năng của BZip3 phụ thuộc nhiều vào trình biên dịch; bản dựng x64 Linux clang13 có thể đạt tối đa 17MiB/s nén và 23MiB/s giải nén trên mỗi luồng.
    • Đã được kiểm thử trên nhiều kiến trúc: x86, x86_64, armv6, armv7, aarch64, mips, sparc, v.v.
  • Giấy phép
    • BZip3 được cấp phép theo LGPLv3.
    • Mã Burrows-Wheeler transform và LZP sử dụng giấy phép Apache 2.0.
    • Các thành phần khác ở thời điểm biên dịch và thời gian chạy tuân theo giấy phép tương ứng của chúng.

1 bình luận

 
GN⁺ 2025-02-03
Ý kiến trên Hacker News
  • Đã triển khai Burrows-Wheeler Transform nhiều lần, nhưng trực giác về lý do nó hoạt động vẫn khó nắm bắt
    • Thuật toán này lúc nào cũng gây ấn tượng
  • Chia sẻ kết quả benchmark nén của mã nguồn Perl
    • So sánh thời gian nén/giải nén và mức dùng bộ nhớ của xz, bzip2, bzip3, zstd
    • Chênh lệch mức dùng bộ nhớ rất đáng chú ý: 8M so với 18301M
  • Tác giả đã viết chương trình bằng Malbolge, một ngôn ngữ lập trình cực khó, thật sự rất đáng nể
  • Trước đây đã nén lại dữ liệu bằng bzip, nhưng sau đó nhận ra định dạng này đã lỗi thời nên việc giải nén trở nên khó khăn
    • Giờ thì dùng những định dạng kém hiệu quả nhưng sẽ tồn tại lâu dài hơn
  • Các cải tiến của BWT rất tuyệt vời
    • Có vẻ có tiềm năng lớn cho việc cải thiện nén “tầm xa”
    • Cần tìm ra cách phát hiện sự tương đồng trên các bộ dữ liệu nhiều GB một cách hiệu quả
  • Có một đề nghị nhỏ là hãy ghi thêm header hoặc tail block để lưu hiệu suất nén
    • bzip2 không làm vậy, nhưng gzip thì có
  • Thật lạ khi bzip3 vẫn chưa được liệt kê trong các benchmark nén văn bản lớn
  • Có câu hỏi về việc so sánh với các bộ nén dựa trên BWT khác
  • Có đề xuất ý tưởng nén trước các đoạn lặp dài của đầu vào, rồi chỉ đưa các khối literal qua BWT để xử lý
    • Cách này có thể kém hơn mô hình ngữ cảnh mặc định của PPM hoặc Brotli
  • Các thuật toán nén tỷ lệ cao là một lĩnh vực rất chuyên biệt
    • Dùng zstd hoặc brotli ở mức thiết lập thấp có thể tăng tốc bằng cách giảm lượng dữ liệu truyền qua mạng hoặc lưu trữ
    • Với lượng RAM hiện đại, zstd và brotli có thể tận dụng các phép khớp tầm xa