問題タブ [burrows-wheeler-transform]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
compression - bzip2 の最大ブロックサイズが 900k なのはなぜですか?
bzip2
(つまり、Julian Seward によるこのプログラム) は、100k から 900k の間の利用可能なブロックサイズをリストしています:
この数値は、圧縮ファイルのヘッダーhundred_k_blocksize
に書き込まれる値に対応します。
documentationから、メモリ要件は次のとおりです。
元のプログラムが作成された時点 (1996 年) には、7.6M (400k + 8 * 900k) というメモリはコンピューター上でかなりの量だったかもしれないと思いますが、今日のマシンではそんなことはありません。
私の質問は2つの部分です:
1) ブロック サイズを大きくすると、圧縮率が向上しますか? (単純に、私はイエスだと思います)。大きなブロックを使用しない理由はありますか? 圧縮の CPU 時間は、ブロックのサイズに応じてどのように変化しますか?
2) 実際には、より大きなブロックサイズを可能にする bzip2 コード (または代替実装) のフォークはありますか? これには、ソース コードの大幅な修正が必要ですか?
ファイル形式は、これを処理するのに十分な柔軟性があるようです。たとえば...hundred_k_blocksize
ブロックサイズを示す8ビット文字を保持しているため、ASCIIテーブルを下に拡張して、より大きなブロックサイズを示すことができます(例':'
= x3A
=> 1000k
、';'
= x3B
=> 1100k
、'<'
= x3C
=> 1200k
、...) .