bzip3
概要
- BZip3 はBZip2の精神的後継として、より高い圧縮率とパフォーマンスを実現
- Burrows-Wheeler変換 や LZ77スタイル の手法を組み合わせた高度な圧縮技術
- テキストやコードの圧縮に特に優れる
- マルチスレッドやパラメータ調整による柔軟な動作
- ライセンスや依存ライブラリも明確に記載
BZip3の特徴
- BZip2の精神的後継 として設計、より高圧縮・高速性能
- Order-0コンテキストミキシングエントロピーコーダ による高効率圧縮
- Suffix Arrayを活用した高速Burrows-Wheeler変換
- RLEとLempel Ziv+Prediction(LZ77型文字列一致+PPMスタイル文脈モデル)
- テキストやプログラムコードの圧縮に最適化
- マルチスレッド対応による高速処理
- 柔軟なブロックサイズ・圧縮レベル設定
インストール方法
- ソースからインストール
- git clone利用時:
- すべての環境で:
./configure
make
sudo make install
- パッケージマネージャ経由
- macOSの場合:
brew install bzip3 コマンドで簡単インストール
圧縮ベンチマーク(Perlソースコード例)
- テスト内容
- Perl5全バージョンをダウンロード・解凍し、.tarファイルへまとめて各種圧縮ツールで比較
- 主なコマンド例
- xz, bzip2, bzip3, zstdによる圧縮速度・圧縮率比較
- bzip3のブロックサイズ・スレッド数によるパフォーマンス調整
- 圧縮結果(ファイルサイズ比較)
- LZMA (xz): 2,056,645,240バイト
- bzip2: 3,441,163,911バイト
- bzip3 -b 256: 1,001,957,587バイト
- bzip3 -b 511: 546,456,978バイト
- Zstandard: 3,076,143,660バイト
- 解凍速度(HDD計測)
- LZMA (xz): 4分40秒
- bzip2: 9分22秒
- bzip3(並列): 4分06秒
- Zstandard: 3分51秒
長距離重複除去(lrzip)との組み合わせ
- lrzipによる事前処理後、bzip3等で二重圧縮
- 圧縮後サイズ比較
- lrzip + bzip3: 60,672,608バイト
- lrzip + lzma: 64,774,202バイト
- lrzip + bzip2: 75,685,065バイト
注意事項・免責事項
- 本プログラム利用によるデータ損失に一切責任を負わない
- 圧縮ファイルは必ず元に戻せるという前提で設計
- 複雑なアルゴリズム・特殊ケースの存在でバグゼロは保証不可
- 重要データの圧縮はリスクを理解した上で実施
- bzip3/libbz3は入念にテスト済み
- ビルド環境依存性 あり(x64 Linux clang13推奨、Windowsや32bitは低速傾向)
対応アーキテクチャ
- x86, x86_64, armv6, armv7, aarch64, ppc64le, mips, mips64, sparc, s390x で動作確認
ライセンス情報
- bzip3全体: LGPLv3のみ(デュアルライセンスではない)
- Burrows-Wheeler変換・LZPコード: Apache 2.0
- build-aux関連: GPL-3+(AutoConf例外付)、FSFAP、GPLv3など
- bz3grep: BSD-2-clause
謝辞
- Ilya Grebnov: Burrows-Wheeler変換用libsaisライブラリ、LZP参考実装
- Caleb Maclennan: autotoolsによるビルドシステム設定
- Ilya Muravyov: BWT後処理コーダ(派生実装をBZip3で利用)
さらなるベンチマーク
- powturboのベンチマーク でbzip3, bzip2, bsc等との比較結果も参照可能
- 詳細なベンチマークは etc/BENCHMARKS.md に記載