FiniteStateEntropy
1.0.0
該庫提出了兩種高速熵編碼器:
Huff0是專為現代 CPU 設計的霍夫曼編解碼器,在多個 ALU(算術邏輯單元)上進行 OoO(亂序)運算,實現極快的壓縮和解壓縮速度。
FSE是一種新型熵編碼器,基於 ANS 理論,由 Jarek Duda 開發,能夠以更高的速度實現精確的壓縮精度(如算術編碼)。
分支 | 地位 |
---|---|
掌握 | |
開發者 |
基準測試在配備 Linux Mint 64 位元的 Intel Core i7-5600U 上運行。原始碼使用 GCC 4.8.4、64 位元模式編譯。測試文件是使用提供的probagen
程式產生的。 Benchmark 將範例檔案分成 32 KB 的區塊。 Huff0
和FSE
與zlibh
進行比較,zlibh 是 zlib 中的霍夫曼編碼器,由 Frederic Kayser 提供。
文件 | 編解碼器 | 比率 | 壓縮 | 減壓 |
---|---|---|---|---|
普羅巴80 | ||||
赫夫0 | 6.38 | 600MB/秒 | 1350MB/秒 | |
快速自旋效應 | 8.84 | 325MB/秒 | 440MB/秒 | |
茲利布 | 6.38 | 265MB/秒 | 300MB/秒 | |
普羅巴14 | ||||
赫夫0 | 1.90 | 595MB/秒 | 860MB/秒 | |
快速自旋效應 | 1.91 | 330MB/秒 | 460MB/秒 | |
茲利布 | 1.90 | 255MB/秒 | 250MB/秒 | |
普羅巴02 | ||||
赫夫0 | 1.13 | 525MB/秒 | 555MB/秒 | |
快速自旋效應 | 1.13 | 325MB/秒 | 445MB/秒 | |
茲利布 | 1.13 | 180MB/秒 | 210MB/秒 |
根據設計,霍夫曼無法打破「每個符號 1 位元」的限制,因此會損失壓縮分佈(例如Proba80
的效率。 FSE不受此限制,且其壓縮效率在所有情況下都保持接近香農極限。然而,這種準確性並不總是必要的,而且可壓縮性較低的分佈與霍夫曼分佈幾乎沒有什麼區別。就其本身而言,Huff0 以巨大的速度優勢的形式提供。
歡迎並鼓勵外部貢獻。 「master」分支僅用於託管穩定版本。 「dev」分支是合併所有貢獻的分支。如果您想提出補丁,請提交到「dev」分支或專用功能分支。不允許直接提交給“master”。