| 開発者 | りんご |
|---|---|
| 初回リリース | 2015 |
| 安定版リリース | lzfse-1.0 / 2017年5月8日 |
| リポジトリ | GitHubの lzfse |
| 書かれた | C |
| オペレーティング·システム | macOS、iOS、Linux [1] |
| 利用可能 | C |
| タイプ | データ圧縮 |
| ライセンス | 3条項新BSDライセンス |
LZFSE(Lempel-Ziv Finite State Entropy)は、Apple社が開発したオープンソース のロスレスデータ圧縮 アルゴリズムです。LZVNと 呼ばれるよりシンプルなアルゴリズムとともにリリースされました。[2]
概要
この名前は、 Lempel-Zivと有限状態エントロピー[3](非対称数値システムの実装)の頭字語です。LZFSEは、AppleのWorldwide Developer Conference 2015で発表されました。同年のiOS 9およびOS X 10.11リリースに同梱されました。
Appleは、LZFSEはzlib(DEFLATE )と同等の比率で圧縮し、より少ないリソースで2〜3倍速く解凍するため、 zlibよりもエネルギー効率が高いと主張しています。これは、解凍速度とレートを同等に優先させる必要があるシナリオを対象としていました。[3]このエネルギー効率の一部は、特にarm64に焦点を当てた最新のマイクロアーキテクチャ向けにアルゴリズムを最適化することで達成されました。[4]サードパーティのベンチマークでは、LZFSEがzlibよりも速く解凍されることが確認されていますが、他の多くの最新の圧縮アルゴリズムの方が、密度、圧縮速度、解凍速度などの圧縮アルゴリズムのパフォーマンス特性がかなり優れている可能性があることも示唆しています。[5]
Squashベンチマークによると、LZFSEはzstd(レベル6)と速度が似ていますが、比率はわずかに劣っています。LZVNはLZ4レベル4と速度が似ていますが、比率はわずかに劣っています。[6] LZFSEもLZVNも実行時に調整することはできませんが、通常の速度比のトレードオフのためにコンパイル時にいくつかの定数を微調整することはできます。[7]
実装
Eric Bainville によって書かれたリファレンスC ライブラリは、 WWDC 2016以降、3 条項 BSD ライセンスの下で利用可能になりました。これには、LZFSE ストリームを圧縮および解凍するための実行ファイルも含まれています。LZVN API を公開する予定はありません。[1]
LZFSE_ENCODE_LZVN_THRESHOLDApple の LZFSE 実装では、入力が(4096 バイト)より小さい場合、LZVN と呼ばれるより単純なアルゴリズムが使用されます。これは、エントロピー符号化のないLZSS タイプのアルゴリズムですが、REP パケットの幅は 3 つあります (L、M、D)。オープンソースのリファレンス実装では、Apple は、LZFSE はサイズが小さい場合のパフォーマンスが低いため、代わりに LZVN が使用されると説明しています。[7] libfastCompression.a のこのアルゴリズムは、以前、Mac OS X Yosemite Developer Preview 1 (2014) のデフォルトのカーネルキャッシュ圧縮方法として発見され、Haruhiko Okumuralzssのレガシー圧縮に取って代わりました。[8]
使用法
HFS PlusおよびApple File Systemにおける準透過的な圧縮のメカニズムである AppleFSCompression.framework (AFSC) は、OS X 10.9 以降で LZFSE と LZVN をサポートしています。
Appleのディスクイメージフレームワークは、 Mac OS X 10.11ULFO以降でLZFSEベースのエンコーディングを提供しており、[9] [10]およびいくつかのサードパーティ製イメージユーティリティ
を介してアクセスできます。hdiutil(1)
Appleは2017年にmacOS High SierraでApple Archiveフォーマットとそれに関連するAPIを導入した。 [11]拡張子名は.aar ( macOS Big Sur以降、以前は.yaa )である。暗号化はmacOS Montereyで導入され、AAがデフォルトのアーカイブユーティリティフォーマットとなった。macOSではAAファイルを処理するためのコマンドラインユーティリティが3つある。[12] [13]サードパーティプログラムのうち、KekaはシステムAPIを使用してAAファイルを処理できるが、他のシステムでは独立した実装は存在しない。[14]
参照
- Zstandard – LZ77とFSEの別の組み合わせ。FSEの作者であるYann Colletによるもの。
- LZ4圧縮アルゴリズム– LZ77ファミリーの高速なメンバーで、Appleプラットフォームでも利用可能[15]
参考文献
- ^ ab Bainville, Eric (2016-06-07). 「LZFSE 圧縮ライブラリとコマンドラインツール」. GitHub . 2016-07-04に取得。
- ^ Apple Inc. 「データ圧縮 - 圧縮 | Apple Developer Documentation」。developer.apple.com 。2017年4月7日閲覧。
- ^ ab De Simone, Sergio. 「Apple が新しい圧縮アルゴリズム LZFSE をオープンソース化」。infoq。2016年 7 月 7 日閲覧。
- ^ Apple Inc. (2015-06-12). 「低エネルギー、高パフォーマンス: 圧縮と高速化 - WWDC 2015 - Apple Developer Videos」。developer.apple.com 。2017年3月5日閲覧。pdf 2016-04-18にWayback Machineにアーカイブされました
- ^ 「圧縮ベンチマーク」。2018年8月10日閲覧。
- ^ 「 Squash圧縮ベンチマーク」。GitHub。Squash。2019年12月 25 日閲覧。
- ^ ab "lzfse_tunables.h". GitHub . 2019年12月18日. 2019年12月22日閲覧。
- ^ パイカー-アルファ (2014 年 6 月 4 日)。 「OS X 10.10 Yosemite DP1 カーネル(キャッシュ)」。パイクのユニバーサム。2019 年12 月 22 日に取得。
- ^ Tsai, Michael (2015-10-07). 「El Capitan の LZFSE ディスクイメージ」。2017-04-09 時点のオリジナルよりアーカイブ。2022-04-15閲覧。
- ^ 「hdiutil(1) mojave manページ」。2022年4月15日閲覧。
- ^ 「Apple アーカイブ」。Apple開発者向けドキュメント。
- ^ 「Apple Archiveの中身:圧縮フォーマット以上のもの」The Eclectic Light Company 2022年5月10日。
- ^ 「AA(1): Appleアーカイブを操作する」keith.github.io。
- ^ 「AppleArchive サポート · 問題 #829 · aonez/Keka」。GitHub。
- ^ "compression_algorithm". Apple Developer Documentation . Apple Inc. 2019年8月11日閲覧。
外部リンク
- GitHubの lzfse
- Yann Collet (Cyan4973) による有限状態エントロピー。LZFSE の FSE 実装のソースです。
- Encode.suでの議論。メンテナーのEric Bainvilleが提案を引用している。
