3 คะแนน โดย GN⁺ 2025-02-03 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • BZip3 เป็นภาคต่อของ BZip2 โดยให้ทั้งอัตราการบีบอัดและประสิทธิภาพที่สูงกว่า
  • ใช้ Order-0 context mixing entropy coder, โค้ด Burrows-Wheeler transform ที่รวดเร็ว, RLE และพาส Lempel Ziv+Prediction ที่อิงกับการจับคู่สตริงสไตล์ LZ77 และการสร้างแบบจำลองคอนเท็กซ์สไตล์ PPM
  • โดดเด่นในการบีบอัดข้อความหรือโค้ด
  • เบนช์มาร์กซอร์สโค้ด Perl
    • ดาวน์โหลดและแตกไฟล์ทุกเวอร์ชันของ Perl5 จากนั้นทดสอบบีบอัดไฟล์ .tar ด้วยตัวบีบอัดหลายแบบ
    • BZip3 แสดงประสิทธิภาพการบีบอัดที่ดีกว่าเมื่อเทียบกับตัวบีบอัดอื่นในหลายการตั้งค่า
    • ในด้านเวลาในการแตกไฟล์ BZip3 ก็แสดงประสิทธิภาพที่ยอดเยี่ยมผ่านการประมวลผลแบบขนาน
  • ข้อสงวนสิทธิ์
    • ไม่รับผิดชอบต่อการสูญหายของข้อมูลที่เกิดจากการใช้งาน BZip3
    • ประสิทธิภาพของ BZip3 ขึ้นอยู่กับคอมไพเลอร์อย่างมาก และบิลด์ x64 Linux clang13 สามารถทำความเร็วได้สูงสุด 17MiB/s ต่อเธรดในการบีบอัด และ 23MiB/s ในการแตกไฟล์
    • ผ่านการทดสอบบนสถาปัตยกรรมหลากหลาย: x86, x86_64, armv6, armv7, aarch64, mips, sparc เป็นต้น
  • ไลเซนส์
    • BZip3 ใช้ไลเซนส์ LGPLv3
    • โค้ด Burrows-Wheeler transform และ LZP ใช้ไลเซนส์ Apache 2.0
    • องค์ประกอบอื่น ๆ สำหรับการคอนฟิกขณะคอมไพล์และขณะรันไทม์เป็นไปตามไลเซนส์ของแต่ละส่วน

1 ความคิดเห็น

 
GN⁺ 2025-02-03
ความเห็นจาก Hacker News
  • เคยลองทำ Burrows-Wheeler Transform หลายครั้งแล้ว แต่ก็ยังยากที่จะเข้าใจสัญชาตญาณว่าทำไมมันถึงใช้งานได้
    • อัลกอริทึมนี้น่าประทับใจเสมอ
  • มีการแชร์ผลเบนช์มาร์กการบีบอัดของซอร์สโค้ด Perl
    • เปรียบเทียบเวลาในการบีบอัดและคลายการบีบอัด รวมถึงการใช้หน่วยความจำของ xz, bzip2, bzip3, zstd
    • ความต่างของการใช้หน่วยความจำนั้นน่าสังเกต: 8M เทียบกับ 18301M
  • ผู้เขียนที่เขียนโปรแกรมด้วยภาษาโปรแกรมสุดโหดอย่าง Malbolge นั้นเก่งมากจริงๆ
  • ในอดีตเคยบีบอัดข้อมูลซ้ำด้วย bzip แต่ภายหลังพบว่าฟอร์แมตนี้ล้าสมัยไปแล้วจนทำให้คลายการบีบอัดได้ยาก
    • ตอนนี้เลยเลือกใช้ฟอร์แมตที่ไม่มีประสิทธิภาพแต่คงอยู่ได้นาน
  • การปรับปรุง BWT นั้นยอดเยี่ยมมาก
    • คิดว่ายังมีศักยภาพสูงมากสำหรับการปรับปรุงการบีบอัดแบบ "ระยะไกล"
    • จำเป็นต้องหาความคล้ายคลึงกันในชุดข้อมูลระดับหลาย GB อย่างมีประสิทธิภาพ
  • มีคำขอเล็กๆ ว่าอยากให้เขียนส่วนหัวหรือบล็อกท้ายที่บันทึกประสิทธิภาพการบีบอัดไว้ด้วย
    • bzip2 ไม่มี แต่ gzip มี
  • แปลกที่ bzip3 ยังไม่ถูกใส่ไว้ในเบนช์มาร์กการบีบอัดข้อความขนาดใหญ่
  • มีคำถามเกี่ยวกับการเปรียบเทียบกับตัวบีบอัดที่อิง BWT
  • มีการเสนอแนวคิดให้บีบอัดส่วนที่ซ้ำยาวๆ ของอินพุตก่อน แล้วค่อยส่งเฉพาะบล็อกลิเทอรัลผ่าน BWT
    • วิธีนี้อาจแย่กว่าการทำ context modeling พื้นฐานของ PPM หรือ Brotli
  • อัลกอริทึมบีบอัดระดับสูงเป็นสาขาที่เฉพาะทางมาก
    • การใช้ zstd หรือ brotli ที่การตั้งค่าต่ำอาจช่วยลดการส่งผ่านเครือข่ายหรือการจัดเก็บและทำให้เร็วขึ้น
    • ด้วยปริมาณ RAM ในปัจจุบัน zstd และ brotli จึงสามารถใช้ประโยชน์จากการจับคู่ระยะไกลได้