Apple 开源新的压缩算法 LZFSE

  • Sergio De Simone
  • 谢丽

2016 年 7 月 6 日

话题:开源LinuxAppleiOS语言 & 开发

苹果开源了新的无损压缩算法LZFSE,该算法是去年在 iOS 9 和 OS X 10.10 中引入的。按照苹果公司的说法,LZFE 的压缩增益和 ZLib level 5 相同,但速度要快 2~3 倍,能源效率也更高。

LZFSE 基于 Lempel-Ziv ,并使用了有限状态熵编码,后者基于 Jarek Duda 在非对称数字系统(ANS)方面所做的熵编码工作。简单地讲,ANS 旨在“终结速度和比率的平衡”,既可以用于精确编码,又可以用于快速编码,并且具有数据加密功能。使用 ANS 代替更为传统的Huffman算术编码方法的压缩库越来越多,LZFSE 就位列其中。

显然,LZFSE 的目标不是成为最好或最快的算法。事实上,苹果公司指出,LZ4的压缩速度比 LZFSE 快,而LZMA提供了更高的压缩率,但代价是比 Apple SDK 提供的其他选项要慢一个数量级。当压缩率和速度几乎同等重要,而你又希望降低能源效率时,LZFSE 是苹果推荐的选项。

GitHub上提供了 LZFSE 的参考实现。在 MacOS 上构建和运行一样简单:

$ xcodebuild install DSTROOT=/tmp/lzfse.dst

如果希望针对当前的 iOS 设备构建 LZFSE,可以执行:

xcodebuild -configuration "Release" -arch armv7 install DSTROOT=/tmp/lzfse.dst

除了API 文档之外,苹果去年还提供了一个示例项目,展示如何使用 LZFSE 进行块和流压缩,这是一个实用的 LZFSE 入门资源。

LZFSE 是在谷歌brotli之后发布的,后者在去年开源。与 LZFSE 相比,brotli似乎是针对一个不同的应用场景进行了优化,比如压缩静态 Web 资产和 Android APK,在这些情况下,压缩率是最重要的。

查看英文原文Apple Open-sources its New Compression Algorithm LZFSE

开源LinuxAppleiOS语言 & 开发