Skrip sederhana ini membandingkan pustaka kompresi zlib yang berbeda untuk kompresor paralel pigz. Kompresi paralel dapat menggunakan banyak inti yang tersedia pada komputer modern untuk mengompresi data dengan cepat. Teknik ini dapat dikombinasikan dengan zlib CloudFlare yang mempercepat kompresi menggunakan fitur perangkat keras modern lainnya. Di sini, saya telah mengadaptasi skrip untuk mengevaluasi kompresi .gz gambar otak berformat NIfTI. Alat seperti AFNI dan FSL biasanya menyimpan gambar NIfTI menggunakan kompresi gzip (file .nii.gz). Metode MRI modern seperti multi-band menghasilkan kumpulan data yang sangat besar, sehingga banyak waktu yang dihabiskan untuk mengompresi gambar-gambar ini.
Grafik di bawah menunjukkan kinerja pigz versus pigz single-thread default, sehingga '1' menunjukkan kinerja yang setara. Performa ditampilkan untuk 3 level kompresi: cepat (3, garis dasar 35 detik), default (6, 50 detik) dan lambat (9, 183 detik). Sumbu horizontal menunjukkan jumlah thread yang dikhususkan untuk kompresi. Pada tingkat kompresi yang lebih rendah (1), semua alat relatif cepat, dengan membaca dan menulis dari disk menjadi faktor pembatas kecepatan. Pada tingkat kompresi yang lebih tinggi, kombinasi beberapa thread dan peningkatan CloudFlare secara dramatis mempercepat kinerja dibandingkan dengan gzip default. Sistem pengujiannya adalah Intel Xeon Platinum 8260 24-core (48 thread):
Grafik berikutnya menunjukkan setiap alat menggunakan jumlah thread pilihannya pada komputer 4-core (8 thread) untuk mengompresi Silesia corpus yang populer. Semua versi pigz mengungguli gzip thread tunggal sistem. Dapat dilihat bahwa format zstd modern mendominasi gzip yang lebih lama dan lebih sederhana. gzip telah diadopsi secara luas di banyak bidang (misalnya dalam pencitraan otak digunakan untuk NIfTI, NRRD dan AFNI). Kesederhanaan format gzip berarti mudah bagi pengembang untuk menyertakan dukungan pada alat mereka. Oleh karena itu, gzip memainkan peran penting dalam komunitas. Namun, format modern yang dirancang untuk perangkat keras modern dan memanfaatkan teknik baru memiliki manfaat yang melekat.
Skrip 5decompress.sh
memungkinkan kita membandingkan kecepatan dekompresi. Dekompresi lebih cepat daripada kompresi. Namun, dekompresi gzip tidak dapat memanfaatkan banyak thread, dan umumnya lebih lambat dibandingkan format kompresi modern. Dalam pengujian ini, semua alat gz mendekompresi data tersebut. Sebaliknya, bzip2 dan ztd mendekompresi data yang dikompresi ke ukuran yang lebih kecil. Kecepatan dalam megabita per detik dihitung berdasarkan ukuran yang didekompresi. Biasanya kompresi yang lebih ringkas menggunakan algoritme yang lebih rumit, sehingga perbandingan antar format merupakan hal yang menantang. Terlepas dari itu, di antara alat gz, zlib-ng menunjukkan kinerja dekompresi yang unggul:
Kecepatan (mb/dtk) | babi-CF | babiz-ng | babi-Sys | gzip | pbzip2 | pbzip2 |
---|---|---|---|---|---|---|
Dekompresi | 278 | 300 | 274 | 244 | 122 | 236 |
Jalankan benchmark dengan perintah seperti berikut:
1compile.sh
2test.sh
5decompress.sh
1compile.sh
akan mengunduh dan membuat salinan pigz menggunakan varian zlib yang berbeda (sistem, CloudFlare, ng). Itu juga mengunduh gambar sampel untuk menguji kompresi, khususnya sampel pemindaian MRI yang disalin ke folder corpus
. Anda harus menjalankan skrip ini satu kali terlebih dahulu, sebelum skrip lainnya. Semua skrip lainnya dapat dijalankan secara independen satu sama lain.2test.sh
membandingkan kecepatan berbagai versi pigz serta gzip thread tunggal sistem. Anda dapat mengganti file di folder corpus
dengan file yang lebih mewakili kumpulan data Anda.3slowtest.sh
mengunduh korpus Silesia dan menguji kecepatan kompresi. Korpus ini populer: benchmark 1, benchmark 2, benchmark 3.4verify.sh
menguji kompresi dan dekompresi setiap metode, memastikan bahwa metode tersebut mampu menyimpan data tanpa kehilangan.5decompress.sh
mengevaluasi kecepatan dekompresi. Secara umum, format gzip lambat untuk dikompres tetapi cepat untuk didekompresi (terutama dibandingkan dengan format yang dikembangkan pada waktu yang sama). Namun, dekompresi gzip relatif lambat dibandingkan zstd modern. Selain itu, meskipun kompresi gzip dapat memperoleh manfaat dari pemrosesan paralel, dekompresi tidak. Fitur penting dari skrip ini adalah setiap varian zlib menyumbangkan file terkompresi ke korpus pengujian, dan kemudian setiap alat diuji pada korpus lengkap ini. Hal ini memastikan kami membandingkan tugas serupa, karena beberapa metode kompresi zlib mungkin menghasilkan file yang lebih kecil dengan mengorbankan pembuatan file yang lebih lambat untuk didekompresi.6speed_size.sh
membandingkan varian pigz yang berbeda dengan gzip, zstd dan bzip2 untuk mengompresi korpus Silesia. Setiap alat diuji pada tingkat kompresi yang berbeda, namun selalu menggunakan jumlah thread yang diinginkan. blocksize
yang sesuai dengan jumlah thread untuk kompresi. Repositori ini menyertakan skrip test_mgzip.py
untuk mengevaluasi alat ini.