このライブラリは、2 つの高速エントロピー コーダーを提案しています。
Huff0 は、最新の CPU 向けに設計されたハフマン コーデックで、複数の ALU (算術論理演算装置) での OoO (Out of Order) 演算を特徴とし、非常に高速な圧縮および解凍速度を実現します。
FSE は、Jarek Duda が開発した ANS 理論に基づいた新しい種類のエントロピー エンコーダで、はるかに高速で正確な圧縮精度 (算術符号化のような) を実現します。
支店 | 状態 |
---|---|
マスター | |
開発者 |
ベンチマークは、Linux Mint 64 ビットを搭載した Intel Core i7-5600U で実行されます。ソース コードは、GCC 4.8.4、64 ビット モードを使用してコンパイルされます。テスト ファイルは、提供されているprobagen
プログラムを使用して生成されます。ベンチマークはサンプル ファイルを 32 KB のブロックに分割します。 Huff0
とFSE
、Frederic Kayser によって提供される zlib 内のハフマン エンコーダであるzlibh
と比較されます。
ファイル | コーデック | 比率 | 圧縮 | 減圧 |
---|---|---|---|---|
プロバ80 | ||||
ハフ0 | 6.38 | 600MB/秒 | 1350MB/秒 | |
FSE | 8.84 | 325MB/秒 | 440MB/秒 | |
ズリブ | 6.38 | 265MB/秒 | 300MB/秒 | |
プロバ14 | ||||
ハフ0 | 1.90 | 595MB/秒 | 860MB/秒 | |
FSE | 1.91 | 330MB/秒 | 460MB/秒 | |
ズリブ | 1.90 | 255MB/秒 | 250MB/秒 | |
プロバ02 | ||||
ハフ0 | 1.13 | 525MB/秒 | 555MB/秒 | |
FSE | 1.13 | 325MB/秒 | 445MB/秒 | |
ズリブ | 1.13 | 180MB/秒 | 210MB/秒 |
設計上、ハフマンは「シンボルあたり 1 ビット」の制限を破ることができないため、 Proba80
などのスクイーズされた分布では効率が低下します。 FSE にはそのような制限がなく、圧縮効率はどのような状況でもシャノンの制限に近いままです。ただし、この精度は必ずしも必要なわけではなく、圧縮性の低い分布ではハフマンとほとんど違いが見られません。その一方で、Huff0 は速度の大幅な利点をもたらします。
外部からの貢献は歓迎され、奨励されます。 「マスター」ブランチは、安定版リリースをホストすることのみを目的としています。 「dev」ブランチは、すべてのコントリビューションがマージされるブランチです。パッチを提案したい場合は、「dev」ブランチまたは専用の機能ブランチにコミットしてください。 「マスター」への直接コミットは許可されません。