Appleが新しいロスレス圧縮アルゴリズムLZFSEをオープンソース化した。これは昨年、iOS 9とOS X 10.10とともに紹介されたものだ。Appleによると、LZFSEはZLib level 5と同程度の圧縮率ながら2–3倍高速で、より高いエネルギー効率をもたらすという。
LZFSEはLempel-Ziv法をベースに、Finite State Entropy codingを用いている。この符号はJarek Duda氏によるエントロピー符号のためのANS (Asymmetric Numeral Systems)に関する研究に基づいている。簡単に言うと、ANS「スピードと圧縮率のトレードオフに決着をつける」ことを目指しており、データ暗号化をサポートをした、きめ細かな符号と非常に高速なエンコードの両方に使うことができる。LZFSEは、伝統的なハフマン符号や算術符号の部分にANSを用いた多数の圧縮ライブラリのひとつだ。
自ら認めているように、LZFSEは最高あるいは最速のアルゴリズムを目指すものではない。実際、Appleは、LZ4はLZFSEよりも高速である、LZMAはApple SDKで利用可能な他の選択肢よりも1桁以上遅いが高い圧縮率が得られる、と述べている。圧縮率とスピードが同じくらい重要で、エネルギー消費を減らしたいとき、AppleはLZFSEを推奨している。
LZFSEのリファレンス実装がGitHubに公開されている。macOSでビルドするのは簡単で、以下を実行すればよい。
$ xcodebuild install DSTROOT=/tmp/lzfse.dst
もし最近のiOSデバイス向けにビルドしたければ、次のように実行すればよい。
$ xcodebuild -configuration "Release" -arch armv7 install DSTROOT=/tmp/lzfse.dst
LZFSEを使い始めるには、APIドキュメントに加えて、Appleが昨年公開したサンプルプロジェクトが役に立つ。これはLZFSEを使ってブロックおよびストリームを圧縮する方法を示している。
LZFSEはGoogleが昨年オープンソース化したbrotliに続くものだ。LZFSEと比べて、brotliは静的WebアセットやAndroid APKの圧縮といった、圧縮率が最優先となる各種ユースケース向けに調整されているようだ。
Rate this Article
- Editor Review
- Chief Editor Action