LZ4 adalah algoritma kompresi lossless, memberikan kecepatan kompresi > 500 MB/s per inti, dapat diskalakan dengan CPU multi-core. Ia mempunyai fitur dekoder yang sangat cepat, dengan kecepatan beberapa GB/s per inti, biasanya mencapai batas kecepatan RAM pada sistem multi-inti.
Kecepatan dapat disetel secara dinamis, memilih faktor "akselerasi" yang mengubah rasio kompresi untuk kecepatan lebih cepat. Di sisi lain, turunan kompresi tinggi, LZ4_HC, juga disediakan, menukar waktu CPU untuk meningkatkan rasio kompresi. Semua versi memiliki kecepatan dekompresi yang sama.
LZ4 juga kompatibel dengan kompresi kamus, baik di level API maupun CLI. Itu dapat menyerap file input apa pun sebagai kamus, meskipun hanya 64KB terakhir yang digunakan. Kemampuan ini dapat dikombinasikan dengan Zstandard Dictionary Builder, untuk meningkatkan kinerja kompresi pada file kecil secara drastis.
Pustaka LZ4 disediakan sebagai perangkat lunak sumber terbuka menggunakan lisensi BSD 2-Clause.
Cabang | Status |
---|---|
dev |
Benchmarknya menggunakan lzbench, dari @inikep yang dikompilasi dengan GCC v8.2.0 di Linux 64-bit (Ubuntu 4.18.0-17). Sistem referensinya menggunakan CPU Core i7-9700K @ 4.9GHz (w/ turbo boost). Benchmark mengevaluasi kompresi referensi Silesia Corpus dalam mode single-thread.
Kompresor | Perbandingan | Kompresi | Dekompresi |
---|---|---|---|
memcpy | 1.000 | 13700 MB/dtk | 13700 MB/dtk |
LZ4 bawaan (v1.9.0) | 2.101 | 780 MB/dtk | 4970 MB/dtk |
LZO 2.09 | 2.108 | 670 MB/dtk | 860 MB/dtk |
QuickLZ 1.5.0 | 2.238 | 575 MB/dtk | 780 MB/dtk |
Tajam 1.1.4 | 2.091 | 565 MB/dtk | 1950 MB/dtk |
Zstandar 1.4.0 -1 | 2.883 | 515 MB/dtk | 1380 MB/dtk |
LZF v3.6 | 2.073 | 415 MB/dtk | 910 MB/dtk |
zlib mengempis 1.2.11 -1 | 2.730 | 100 MB/dtk | 415 MB/dtk |
LZ4 HC -9 (v1.9.0) | 2.721 | 41 MB/dtk | 4900 MB/dtk |
zlib mengempis 1.2.11 -6 | 3.099 | 36 MB/dtk | 445 MB/dtk |
LZ4 juga kompatibel dan dioptimalkan untuk mode x32 ( -mx32
), yang memberikan performa kecepatan tambahan.
make
make install # this command may require root permissions
Makefile
LZ4 mendukung konvensi Makefile standar, termasuk instalasi bertahap, pengalihan, atau definisi ulang perintah. Ini kompatibel dengan build paralel ( -j#
).
Anda dapat mengunduh dan menginstal LZ4 menggunakan manajer ketergantungan vcpkg:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg.exe install lz4
Port LZ4 di vcpkg selalu diperbarui oleh anggota tim Microsoft dan kontributor komunitas. Jika versinya sudah kedaluwarsa, silakan buat masalah atau tarik permintaan pada repositori vcpkg.
Format kompresi blok LZ4 mentah dirinci dalam lz4_Block_format.
File atau aliran data yang panjangnya sewenang-wenang dikompresi menggunakan beberapa blok, untuk kebutuhan streaming. Blok-blok ini disusun menjadi sebuah bingkai, didefinisikan ke dalam lz4_Frame_format. Versi LZ4 yang dapat dioperasikan juga harus mengikuti format bingkai.
Di luar sumber referensi C, banyak kontributor telah membuat versi lz4 dalam berbagai bahasa (Java, C#, Python, Perl, Ruby, dll.). Daftar port sumber yang diketahui disimpan di Beranda LZ4.
Sebagian besar distribusi dibundel dengan manajer paket yang memungkinkan instalasi perpustakaan liblz4
dan antarmuka baris perintah lz4
dengan mudah.