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”。