#gif #codec #lzw #encoder #decoder #tiff

salzweg

一个快速且内存高效的LZW编码器和解码器

5个版本

0.1.4 2022年10月25日
0.1.3 2022年7月15日
0.1.2 2022年6月8日
0.1.1 2022年6月7日
0.1.0 2022年6月7日

#301压缩


用于 unarc-rs

MIT 许可证

76KB
1.5K SLoC

Docs Crates.io Crates.io

salzweg

Salzweg是一个LZW编码器和解码器。它支持LZW的GIF风格、TIFF风格和固定代码风格。

LZW是一种通用的无损数据压缩算法

该库的目标是内存高效和快速。

  • 解码器仅在栈上运行,因此对内存较低的机器友好。
  • 编码器则基于堆构建,因为它在压缩过程中创建了一个不断增长的可能的编码词树。

速度

首先,一些公式

  • 压缩速度 = 每秒压缩的未压缩字节数。
  • 解压速度 = 每秒解压的未压缩字节数。

结果

AMD Ryzen 7 2700X 八核处理器上使用criterion处理数据时,我观察到以下吞吐量

可变编码器 固定12位大小
压缩图像数据 70 MiB/s 120 MiB/s
解压图像数据 200 MiB/s 210 MiB/s
压缩lorem ipsum文本 70 MiB/s 85 MiB/s
解压lorem ipsum文本 200 MiB/s 220 MiB/s

这些时间已四舍五入,指示的准确性超过100%。但它们始终比LZWWeezlcrate的编码速度快,并且始终比Weezlcrate的解码速度快(我没有尝试用LZW解码,因为比较因API设计而困难)。

来源

许可证

代码采用MIT许可证。

无运行时依赖