1个不稳定版本
0.1.0 | 2021年11月26日 |
---|
#443 in 压缩
22KB
543 行
MASHI まし
100%兼容no-std的Rust实现,PAQ风格的算术编码、上下文混合压缩器。其主要用途是压缩64k演示,但对你来说 whatever works!
快速入门
主要crate是mashi-core
,但我提供了一个非常简陋的mashi-cli
,以便你可以测试压缩器。
要构建和使用CLI
cargobuild --release
target/release/mashi-cli compress tests/test.wasm
target/release/mashi-cli decompress tests/test.wasm.mashi
Cargo功能
- 如果你想要包含编码器,请使用
encoder
功能 - 要启用std支持(例如运行单元测试),请使用
std
功能
非科学的基准测试
使用各种压缩器压缩tests/test.wasm
压缩器 | % | 大小 | 命令行 |
---|---|---|---|
mashi | 34.4% | 12083 | mashi-cli compress |
zpaq | 37.0% | 13004 | zpaq a-m5 |
xz | 38.5% | 13522 | xz--格式=raw--lzma2=预设=9e |
zstd | 41.3% | 14536 | zstd--ultra-22 |
gzip | 44.5% | 15629 | gzip--9 |
original | 100% | 35151 |
许可
由于原始PAQ压缩器是GPL许可,请注意Mashi也是GPL许可。
致谢
- 压缩模型基于Matt Mahoney等人的PAQ工作。
- 算术编码器是Crinkler中的一个,由Mentor和Blueberry完成。
- 通过Jeff Miller的视频和Ferris在Revision 2020的压缩研讨会,我更好地理解了这一切。
- 我的某些移植工作得益于aufdj的工作。