Pengertian dan Cara Kerja Kompresi File


Status
Not open for further replies.

adamelectric

Beginner 2.0
images-2.jpg


Harga media storage seperti flash disk atau harddisk semakin murah, dan menawarkan kapasitas besar. Apakah masih diperlukan kompressi file??


By: Adam Nur Fauzan


Jawabannya adalah YA, terdapat banyak implementasi kompressi file yang populer hingga saat ini. Anda tentu mengenal file-file dengan ekstensi .ZIP atau .RAR yang merupakan file hasil kompressi . Sebenarnya tidak hanya itu, format file seperti JPEG atau MP3 juga merupakan algoritma kompressi agar mendapatkan ukuran yang lebih kecil. Iti sebabnya jika Anda melakukan kompressi lagi file-file tersebut, Anda tidak mendapatkan perubahan ukuran yang signifikan.

Yang jelas, pertukaran data yang semakin padat via Internet, kebutuhan portable dan seterusnya, membuat kompressi file tetap merupakan hal yang vital.

Konsep Kompressi

Konsep kompressi mirip dengan konsep mencontek. Kok bisa??? Jangan khawatir, ini hanya illustrasi. Bayangkan saat ujian, murid A menuliskan jawaban pada selembar kertas, melipat-lipat kertas tersebut, lalu melemparnya kepada murid B. Murid B menangkapnya, membuka lipatan kertas, dan membaca jawaban yang tertera.

Perhatikan, kertas yang terlipat bisa dibayangkan sebagai sebuah file/berkas yang dimampatkan atau dikompress, ukurannya yang lebih kecil membuatnya untuk berpindah tangan. Tetapi untuk mendapatkan ukuran yang lebih kecil dan kecepatan transfer, ada yang harus dibayar sebagai konsekuensinya. Sang penerima (Murid B), harus membuka lipatan kertas tersebut sebelum dapat membaca jawaban ujian. Kita dapat membayangkan proses ini sebagai proses dekompressi, diperlukan waktu dan resource untuk melakukannya.

Algoritma dan Rasio​

Konsepnya terdengar mudah, bagaimana dengan algoritmanya? Salah satu algoritma yang sederhana ditunjukkan dengan algoritma yang dikenal denga Run-length encoding (RLE). Contohnya, terdapat string input sebagai berikut:

AAAAAAAABBCCCCDDDDDD​

String tersebut dapat dikompressi menjadi:

8A2B4C6D​

Terlihat, angka di dpan huruf mempresentasikan beberapa banyak hurufyang sama terulang secara berentet. 8A berarti AAAAAAAA, 2B berarti BB, dan seterusnya. Prosees ini juga disebut proses encoding, dengan mentransformasikan informasi ke format lain. Contoh yang cukup dikenal adalah encoding dari format WAV ke MP3, proses kebalikannya disebut decoding.

Karena tujuannya untuk mengecilkan ukuran, maka perhitungan rasio menjadi suatu tolak ukur keberhasilan sebuah algoritma kompressi. Rasio kompressi dapat dihitung dengan rumus:

Rasio kompressi = ukuran data sebelum terkompressi/ukuran data setelah terkompressi.

Dari contoh sederhana tadi, ukuran sebelum terkompressi adalah 20 karakter, sementara ukuran setelah terkompressi adalah 8 karakter. Maka diperoleh 20/8 yang menghasilkan rasio kompressi sebesar 2.5, dinotasikan dengan 2,5:1. dan dapat diterjemahkan dalam kalimat: setiap 2,5 karakter pada contoh string tersebut dapat di kompressi hanya 1 karakter.

Beberapa aplikasi seperti Winzip pada Windows, menuliskan rasio kompressi dengan persentase, melalui rumus:

% rasio kompressi = (ukuran data setelah terkompressi/ukuran data sebelum terkompressi) x 100.

Masukkan angka dari contoh yang sama, yaitu (8/20) x 100 sehingga diperoleh persentase rasio kompressi sebesar 40%. Artinya, hasil kompressi adalah sebesar 40% dibandingkan ukuran aslinya. Dalam hal ini, semakin kecil tentu semakin baik.

Perhatikan Gambar 1

kompress-300x205.jpg


Menunjukkan sebuah file .zip yang memiliki ratio (6%)

Tetapi jangan kecewa jika Anda mencoba kompressi ZIP/RAR pada file teks berisi 20 karakter seperti contoh (yang berarti berukuran 20 byte). Karena Anda akan mendapatkan hasil kompressi yang justru hasilnya membengkak, bisa jadi berukuran diatas 100 byte! Hal ini terjadi karena file kompressi ZIP/RAR menyimpan informasi header atau format tertentu, dan memang bukan ditujukan untuk mengompress file dengan ukuran kecil.

Algoritama RLE yang ditunjukkan diatas masih sangat sederhana, dan terlihat baru efektif jika terjadi banya pengulangan data. Jika data merupakan file teks/tulisan dalam kalimat berbahasa Indonesia/Inggris , relative tidak terdapat banyak rentetan pengulangan karakter. Tetapi data berupa grafik sederhana berupa icon atau gamba yang memiliki banyak warna area yang sama (seperti gambar garis hitam dibidang putih),cenderung memiliki banya pengulangan byte.

Mari melihat contoh algoritma kompressi lainnya yang merupakan dasar algoritma yang disebut predictive coding, data awal secara sederhana dicontohkan dengan variable array.

Kompressi Executable

Jika Anda melihat file ZIP dan membandingkan dengan file JPEG atau MP3, mungkin timbul pertanyaan mengapa file ZIP harus diektrak terlebih dahulu, sementara MP3 dapat diakses langsung oleh media player yang mendukung format tersebut? Sebenarnya yang terjadi adalah file MP3 itupun di-ektrak secara real-time oleh aplikasi audio player sebelum data itu dijalankan. Tentunya proses tersebut berasa dibackground aplikasi. Jadi, aplikasi player tersebut harus memiliki engine decode untuk format MP3, demikian juga untuk format kompressi lainnya.

Konsep yang sama berlaku jika Anda file kompressi executable, yaitu sebuah file EXE yang dikompressi, tetapi masih ber ekstensi EXE (dengan ukuran lebih kecil), dan siap dijalankan. Engine atau kode untuk maelakukan dekompressi ditamamkan pada file yang sama. Untuk membuat file kompressi executable ini, diperlukan software yang berfungsi sebagai executable compressor (atau packer), yang khusus didesain untuk mengkompressi file executable.

Keuntungan dari kompressi executable adalah:

Anda tidak membutuhkan aplikasi lain untuk melakukan dekompressi, bandingkan jika Anda mengompress sebuah file EXE kedalam ekstensi ZIP/RAR, untuk menjalankan file EXE tersebut, Anda memerlukan aplikasi seperti Winzip untuk melakukan dekompressi.
Dari segi keamanan, kompressi executable dapat menyulitkan usaha reverse engineering atau proses pengodean ulang file tersebut untuk dianalisi oleh pihak lain.
Bagaimana dari segi kecepatan? Walaupun teap dibutuhkan waktu untuk proses dekompressi sebelum dieksekusi, dilain sisi ukuran file yang lebih kecil akan mempercepat waktu transfer data ke memory. Karena itu, umumnya file kompressi executable tidak bermasalah dalam hal kecepatan
Untuk penggunaan yang umum, kompressi executable tidak terlalu popular mengingat kapasitas media storage yang relatif besar untuk menyimpan file executablae. Tetapi kompressi executable sering digunakan oleh malware, dengan tujuan agar program malware tersebut lebih cepat terdistribusi, dan lebih sulit dianalisi. Beberapah contoh adalah UPX, NeoLite, eXPressor, dan seterusnya.

-SELESAI-​
 
Status
Not open for further replies.

Top