LZ4
作者 Yann Collet
初版 2011年4月24日 (15年前) (2011-04-24)
最新版
1.10.0[1] ウィキデータを編集 / 2024年7月22日 (22か月前)
リポジトリ ウィキデータを編集
プログラミング
言語
C言語
対応OS クロスプラットフォーム
プラットフォーム ポータブル
前身 lha(?)
後継 Zstandard(事実上の後継?)
対応言語 日本語・英語など。
サポート状況 サポート中です。(開発中)
種別 データ圧縮、オープンソース(?)
ライセンス 二条項BSDライセンス
公式サイト lz4.org ウィキデータを編集(英語)
テンプレートを表示

LZ4は、圧縮と展開の速さに焦点を当てた可逆圧縮アルゴリズムである。バイト指向の圧縮方法であるLZ77ファミリーに属する。Yann Collet が2011年より開発している。

Yann Collet は LZ4 の開発を始めた4年後の2015年より Zstandard も開発している。

機能

編集

gzipのようなアルゴリズムより低い圧縮率であるLZOよりわずかに圧縮率が低い。しかし、圧縮速度はLZOと同等であり、gzipより数倍速い。展開速度はLZOより著しく速くなりうる[2]

Zstandard の開発者によると LZ4 と Zstandard の --fast=4 が同程度の圧縮率だが、解凍速度は LZ4 の方が速い。[3]

設計

編集

LZ4はデータをシーケンスの連続として表現する。それぞれのシーケンスは、2つの4ビットフィールドに分けられた1バイトのトークンで始まる。最初のフィールドは、出力にコピーされるリテラルバイトの数字で表現される。2つ目のフィールドはすでにデコードした出力バッファからコピーするバイト数を表す(0は最小の一致長である4バイトを表わす)。ビットフィールドのどちらかの値が15なら、長さがそれ以上で追加のデータがあることを示す。値が255のときは、さらにもう1バイト追加されることを示す。そのように、255の値を含む追加のバイトの並びによって任意の長さが表現される。リテラルの文字列が、追加のバイトとトークンのあとにあるなら文字列の長さを示す必要がある。この後にはオフセットが続き、出力バッファでコピーを始めるときにどれだけ戻るかを示す。(もしあればであるが、)シーケンスの終わりには一致長の追加バイトがある [4]

圧縮はストリームまたはブロックで実行できる。より高い圧縮率は、最良一致を探し出すことに、より注力することで達成される。その結果より小さな出力とより速い展開速度が得られる。

実装

編集

Yann Collet による C のリファレンス実装があり、BSDライセンスである。 Java、C#、Python などの多様な言語へのポートやバインディングがある[5]

利用例

編集

Hadoop のようなデータベースも、速い圧縮のためにこのアルゴリズムを利用している。

Linuxカーネル 3.11にもネイティブに実装されている[6]。Linux は SquashFS のために LZ4 を 3.19-rc1 からサポートしている[7]

FreeBSD、Illumos、Linux ZFS、ZFS-OSX におけるZFSファイルシステムの実装はオンザフライ圧縮のために LZ4 アルゴリズムをサポートしている[8][9][10][11]

PlayStation 4[12]Nintendo Switch に利用されている[13]。その他の採用例については公式サイトを参照のこと。

bsdtar では採用されているが、GNU tar では採用されていない。同じ Yann Collet が開発した Zstandard は GNU tar でも bsdtar でも採用されている。

参考文献

編集
  1. ^ “LZ4 v1.10.0 - Multicores edition”. 22 July 2024. 2024年7月23日閲覧.
  2. ^ Michael Larabel (2013年1月28日). “Support For Compressing The Linux Kernel With LZ4”. Phoronix. 2015年8月28日閲覧。
  3. ^ Release Zstandard v1.3.4 - faster everything · facebook/zstd
  4. ^ Yann Collet (2011年5月26日). “RealTime Data Compression”. 2015年8月28日閲覧。
  5. ^ Extremely Fast Compression algorithm http://www.lz4.org - GitHub
  6. ^ Jonathan Corbet (2013年7月19日). “Kernel development”. LWN.net. 2015年8月28日閲覧。
  7. ^ Phillip Lougher (2014年11月27日). “Squashfs: Add LZ4 compression configuration option”. 2015年8月28日閲覧。
  8. ^ FreeBSD 9.2-RELEASE Release Notes”. FreeBSD (2013年11月13日). 2015年8月28日閲覧。
  9. ^ LZ4 Compression”. illumos. 2015年8月28日閲覧。
  10. ^ Illumos #3035 LZ4 compression support in ZFS and GRUB - GitHub
  11. ^ Features: lz4 compression”. OpenZFS. 2015年8月28日閲覧。
  12. ^ Open Source Software used in PlayStation®4”. 2020年7月1日閲覧。
  13. ^ Nintendo Switch uses LZ4”. 2018年3月25日閲覧。

外部リンク

編集

📚 Artikel Terkait di Wikipedia

LXC

Androidアプリケーションを別のLinuxディストリビューション上で実行するためにLXCを利用している ^ “LXC 6.0.6 LTS”. 27 February 2026. 2026年2月27日閲覧. ^ Rami Rosen (2013年5月). “Resource management: Linux kernel namespaces

Advanced Configuration and Power Interface

Advanced Configuration and Power Interface(アドバンスド・コンフィグレーション・アンド・パワー・インターフェイス、ACPI)は、1997年にインテル、東芝、マイクロソフトが共同で作り上げた、PC/AT互換機等の電源制御と構成要素に関する公開された統一規格である。ACPI2

Docker

image. docker docs ^ Ubuntu 18.04.4 ships with a v5.3 based Linux kernel [15] ^ Linux kernel 4.19 series [16] ^ “Kubernetesとは”. 2018年1月3日閲覧。 ^

Unified Extensible Firmware Interface

EFI Linux Boot Loader ^ “Linux_3.3 1.10. EFI boot support” (英語). Linux Kernel Newbies. 2020年7月19日閲覧。 ^ “The EFI Boot Stub” (英語). The Linux Kernel documentation

Filesystem Hierarchy Standard

Linuxを含むUnix系オペレーティングシステム (OS) での主なディレクトリとその内容を定めたものである。大部分において、BSD系のディレクトリ階層を基にして拡張し定式化している。 主要ソフトウェアおよびハードウェアベンダーからなる非営利組織Linux

Debianのバージョン履歴

to be released with completely free Linux Kernel”. Debian.org. 2018年9月8日閲覧。 ^ Proffitt, Brian. “Debian GNU/Linux seeks alignment with Free Software Foundation”

CentOS

Enterprise Operating System)は、Red Hat Enterprise Linux(以下「RHEL」と呼ぶ)と機能的に互換性があることを目指したフリーのLinuxディストリビューションである。2014年1月、CentOSはレッドハットと公式に提携することを発表したが

富岳 (スーパーコンピュータ)

Dを使用して結合された158,976個のA64FXを使用している。 「富岳」はIHK/McKernelという名前の軽量マルチカーネルオペレーティングシステムを使用している。このオペレーティングシステムはLinuxと軽量カーネルのMcKernelの両方を使用し、同時に並行して動作する。両方のカーネルが実行されるインフラストラクチャーはInterface