3P by neo 18일전 | ★ favorite | 댓글 1개
  • BZip3는 BZip2의 후속작으로, 더 높은 압축률과 성능을 제공함.
  • Order-0 컨텍스트 혼합 엔트로피 코더, 빠른 Burrows-Wheeler 변환 코드, LZ77 스타일 문자열 매칭과 PPM 스타일 컨텍스트 모델링을 기반으로 한 RLE 및 Lempel Ziv+Prediction 패스를 사용함
  • 텍스트나 코드 압축에 뛰어남.
  • 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 변환과 LZP 코드는 Apache 2.0 라이선스를 가짐.
    • 기타 컴파일 타임 및 런타임 구성 요소는 각각의 라이선스를 따름.
Hacker News 의견
  • Burrows-Wheeler Transform을 여러 번 구현했지만, 왜 작동하는지에 대한 직관은 여전히 이해하기 어려움
    • 이 알고리즘은 항상 인상적임
  • Perl 소스 코드의 압축 벤치마크 결과를 공유함
    • xz, bzip2, bzip3, zstd의 압축 및 해제 시간과 메모리 사용량을 비교함
    • 메모리 사용량 차이가 주목할 만함: 8M 대 18301M
  • Malbolge라는 어려운 프로그래밍 언어로 프로그램을 작성한 저자는 매우 대단한 사람임
  • 과거에 bzip으로 데이터를 재압축했지만, 나중에 이 포맷이 구식이 되어 압축 해제가 어려워졌음을 깨달음
    • 이제는 오래 지속될 비효율적인 포맷을 사용함
  • BWT 개선은 훌륭함
    • "장거리" 압축 개선에 큰 잠재력이 있다고 생각함
    • 멀티 GB 데이터 세트에서 유사성을 효율적으로 찾는 것이 필요함
  • 압축 효율성을 기록하는 헤더나 테일 블록을 작성해 달라는 작은 요청이 있음
    • bzip2는 그렇지 않지만, gzip은 함
  • bzip3가 아직 대형 텍스트 압축 벤치마크에 나열되지 않은 것이 이상함
  • BWT 기반 압축기와의 비교에 대한 질문이 있음
  • 입력의 긴 반복을 먼저 압축하고, 리터럴 블록만 BWT를 통해 처리하는 아이디어가 제안됨
    • 이 방법이 PPM이나 Brotli의 기본 컨텍스트 모델링보다 나쁠 수 있음
  • 고압축 알고리즘은 매우 전문적인 분야임
    • zstd나 brotli를 낮은 설정에서 사용하는 것이 네트워크나 저장소 전송을 줄여 속도를 높일 수 있음
    • 현대의 RAM 양으로 인해 zstd와 brotli는 긴 범위의 일치를 활용할 수 있음