Lzma adalah singkatan dari Algoritma rantai Lempel-Ziv-Markov. Lzma adalah alat kompresi seperti bzip2 dan gzip untuk mengompres dan mendekompresi file. Ini cenderung jauh lebih cepat dan efisien daripada kompresi bzip. Seperti yang kita ketahui, rasio kompresi gzip lebih buruk daripada bzip2 (dan lzma).
Dalam artikel ini, mari kita pahami cara menggunakan lzma, utilitas kompresi efektif yang secara signifikan lebih baik dalam rasio kompresi dan operasi lebih cepat.
Kompres file teks input menggunakan lzma -c
$ lzma -c --stdout sample.txt >sample.lzma
Dekompresi file lzma menggunakan opsi -d
$ lzma -d –stdout sample.lzma >sample.txt
Perbandingan antara alat kompresi bzip2 dan lzma
Untuk memahami keefektifan lzma, mari kita kompres/dekompresi sample.txt 1MB dengan lzma dan bzip2 dan bandingkan hasilnya. Pengujian ini telah dilakukan dengan mesin yang memiliki RAM 1 GB dan prosesornya adalah Pentium 4.
Ukuran file input sample.txt:
$ ls -l sample.txt -rw-r--r-- 1 bala bala 1048576 2010-05-14 19:43 sample.txt
Catatan: Kami menggunakan perintah waktu di depan setiap perintah kompresi dan dekompresi untuk mendapatkan penggunaan CPU dari perintah tersebut.
Kompres sample.txt menggunakan bzip2
Kompres file input dengan perintah bzip2 dan tidak memerlukan opsi selama kompresi.
$ time bzip2 sample.txt real 0m27.874s user 0m13.981s sys 0m0.148s $ ls -l sample.txt.bz2 -rw-r--r-- 1 bala bala 1750 2010-05-14 19:43 sample.txt.bz2
Setelah bzip2 kompresi, ukuran file output 1750 byte .
Dekompresi sample.txt menggunakan bunzip2
Dekompresi file terkompresi dengan utilitas bunzip2 dan juga tidak memerlukan opsi apa pun untuk diteruskan.
$ bunzip2 sample.txt.bz2 real 0m0.232s user 0m0.128s sys 0m0.020s
Kompres sample.txt menggunakan lzma
Sekarang, mari kita kompres sample.txt menggunakan perintah lzma dengan opsi berikut:
- -c untuk mengompres
- –stdout untuk mencetak keluaran terkompresi di stdout
$ time lzma -c --stdout sample.txt >sample.lzma real 0m2.035s user 0m1.544s sys 0m0.132s $ ls -l sample.lzma -rw-r--r-- 1 bala bala 543 2010-05-14 19:48 sample.lzma
Setelah kompresi, lzma menghasilkan file keluaran dengan ukuran 543 byte , yang relatif kurang dari perintah bzip2. Juga, seperti yang terlihat di atas, waktu CPU yang digunakan oleh lzma jauh lebih sedikit daripada bzip2.
Dekompresi sample.txt menggunakan lzma
Dekompresi file *.lzma menggunakan perintah lzma dengan opsi berikut:
- -d untuk mengompres
- –stdout untuk mencetak hasil dekompresi di stdout
$ time lzma -d --stdout sample.lzma >sample.txt real 0m0.043s user 0m0.016s sys 0m0.004s
Seperti yang terlihat di atas, dekompresi yang dilakukan oleh lzma berkali-kali lebih cepat daripada bzip2
Tingkat Kompresi Lzma yang Berbeda
- Lzma menyediakan rentang kompresi dari -1 hingga -9.
- -9 adalah rasio kompresi tertinggi, yang memerlukan sejumlah waktu dan sumber daya sistem untuk melakukannya. Rasio ini tidak berlaku untuk dekompresi.
- -1 adalah rasio kompresi level terendah dan berjalan lebih cepat.
Lakukan hal berikut untuk melakukan kompresi lzma cepat menggunakan rasio kompresi tingkat rendah:
$ lzma -1 -c --stdout sample.txt >sample.lzma $ ls -l sample.lzma -rw-r--r-- 1 bala bala 548 2010-05-14 20:47 sample.lzma
Catatan: -fast adalah alias untuk -1.
-9 adalah rasio kompresi level tertinggi dan membutuhkan waktu lebih lama untuk mengompresi daripada rasio level rendah. Lakukan hal berikut untuk melakukan kompresi intensif menggunakan rasio kompresi tingkat tinggi:
$ lzma -9 -c --stdout sample.txt >sample.lzma $ ls -l sample.lzma -rw-r--r-- 1 bala bala 543 2010-05-14 20:55 sample.lzma
Catatan: -best adalah alias untuk -9.