| Pengarang | Kontak | Url |
|---|---|---|
| Tim Pengembangan Blosc | [email protected] | https://www.blosc.org |
| Gitter | Tindakan GH | Numfocus | Kode Etik |
|---|---|---|---|
Catatan : Ada versi yang lebih modern dari paket ini yang disebut C-Blosc2 yang mendukung lebih banyak fitur dan lebih aktif dipelihara. Kunjungi di: https://github.com/blosc/c-blosc2
Blosc adalah kompresor kinerja tinggi yang dioptimalkan untuk data biner. Ini telah dirancang untuk mengirimkan data ke cache prosesor lebih cepat daripada pendekatan fetch memori langsung, tidak terkompresi, melalui panggilan OS memcpy (). Blosc adalah kompresor pertama (yang saya ketahui) yang dimaksudkan tidak hanya untuk mengurangi ukuran dataset besar pada disk atau dalam memori, tetapi juga untuk mempercepat perhitungan yang terikat memori.
Ini menggunakan teknik pemblokiran untuk mengurangi aktivitas di bus memori sebanyak mungkin. Singkatnya, teknik ini bekerja dengan membagi kumpulan data dalam blok yang cukup kecil untuk dimuat dalam cache prosesor modern dan melakukan kompresi / dekompresi di sana. Ini juga memanfaatkan, jika tersedia, instruksi SIMD (SSE2, AVX2) dan kemampuan multi-threading CPU, untuk mempercepat proses kompresi / dekompresi secara maksimal.
Lihat beberapa tolok ukur tentang kinerja blosc.
Blosc didistribusikan menggunakan lisensi BSD, lihat lisensi.txt untuk detailnya.
C-Blosc tidak seperti kompresor lain: itu harus disebut meta-kompresor. Ini karena dapat menggunakan kompresor dan filter yang berbeda (program yang umumnya meningkatkan rasio kompresi). Bagaimanapun, itu juga dapat disebut kompresor karena kebetulan sudah datang dengan beberapa kompresor dan filter, sehingga sebenarnya dapat bekerja seperti codec biasa.
Saat ini C-blosc hadir dengan dukungan Blosclz, kompresor yang sangat didasarkan pada Fastlz (https://ariya.github.io/fastlz/), lz4 dan lz4hc (https://lz4.org/), snappy (https://google.gith.io.snappy (https://google.gith.io.snappy (https:/google.github.io.snapp dan zstandard (https://facebook.github.io/zstd/).
C-blosc juga dilengkapi dengan sangat dioptimalkan (mereka dapat menggunakan instruksi SSE2 atau AVX2, jika tersedia) filter shuffle dan bitshuffle (untuk info tentang bagaimana dan mengapa pekerjaan mengocok lihat di sini). Namun, kompresor atau filter tambahan dapat ditambahkan di masa depan.
BLOSC bertugas mengoordinasikan berbagai kompresor dan filter sehingga mereka dapat memanfaatkan teknik pemblokiran serta eksekusi multi-threaded (jika beberapa core tersedia) secara otomatis. Itu membuat bahwa setiap codec dan filter akan bekerja dengan kecepatan yang sangat tinggi, bahkan jika itu awalnya tidak dirancang untuk melakukan pemblokiran atau multi-threading.
Akhirnya, C-Blosc sangat cocok untuk menangani data biner karena dapat memanfaatkan meta-informasi ukuran jenis untuk meningkatkan rasio kompresi dengan menggunakan filter shuffle dan bitshuffle yang terintegrasi.
Saat diambil bersama -sama, semua fitur ini membedakan Blosc dari perpustakaan kompresi lainnya.
Blosc dapat dibangun, diuji dan diinstal menggunakan CMake_. Prosedur berikut menjelaskan build "di luar sumber".
$ cd c-blosc
$ mkdir build
$ cd buildSekarang jalankan konfigurasi cmake dan secara opsional tentukan direktori instalasi (misalnya/usr 'atau'/usr/lokal '):
$ cmake -DCMAKE_INSTALL_PREFIX=your_install_prefix_directory ..CMake memungkinkan untuk mengonfigurasi blosc dengan berbagai cara, seperti lebih memilih sumber internal atau eksternal untuk kompresor atau mengaktifkan/menonaktifkannya. Harap dicatat bahwa konfigurasi juga dapat dilakukan dengan menggunakan alat UI yang disediakan oleh CMake (CCMake atau CMake-GUI):
$ ccmake .. # run a curses-based interface
$ cmake-gui .. # run a graphical interfaceBangun, uji dan instal blosc:
$ cmake --build .
$ ctest
$ cmake --build . --target installVersi statis dan dinamis dari perpustakaan Blosc, bersama dengan file header, akan diinstal ke dalam cmake_install_prefix yang ditentukan.
C-Blosc hadir dengan sumber penuh untuk LZ4, LZ4HC, Snappy, Zlib dan ZSTD dan secara umum, Anda tidak perlu khawatir tidak (atau CMake tidak menemukan) perpustakaan dalam sistem Anda karena secara default sumber yang disertakan akan secara otomatis disusun dan dimasukkan dalam perpustakaan C-Blosc. Ini secara efektif berarti bahwa Anda dapat percaya diri dalam memiliki dukungan lengkap untuk semua codec di semua penyebaran blosc (kecuali jika Anda secara eksplisit mengecualikan dukungan untuk beberapa dari mereka).
Tetapi jika Anda ingin memaksa Blosc untuk menggunakan perpustakaan codec eksternal alih -alih sumber yang disertakan, Anda dapat melakukannya:
$ cmake -DPREFER_EXTERNAL_ZSTD=ON ..Anda juga dapat menonaktifkan dukungan untuk beberapa perpustakaan kompresi:
$ cmake -DDEACTIVATE_SNAPPY=ON .. # in case you don't have a C++ compiler Dalam contoh/ direktori Anda dapat menemukan petunjuk tentang cara menggunakan blosc di dalam aplikasi Anda.
Blosc dimaksudkan untuk mendukung semua platform di mana kompiler C C89 yang sesuai dapat ditemukan. Yang sebagian besar diuji adalah Intel (Linux, Mac OSX dan Windows) dan ARM (Linux), tetapi yang eksotis sebagai IBM Blue Gene Q Embedded "A2" Prosesor dilaporkan bekerja juga.
Jika Anda mengalami masalah kompilasi saat menggunakan Mac OSX, pastikan Anda telah menginstal alat pengembang baris perintah. Anda selalu dapat menginstalnya dengan:
$ xcode-select --install Blosc memiliki pembungkus resmi untuk Python. Melihat:
https://github.com/blosc/python-blosc
Blosc dapat digunakan dari baris perintah dengan menggunakan Bloscpack. Melihat:
https://github.com/blosc/bloscpack
Bagi mereka yang ingin menggunakan Blosc sebagai filter di perpustakaan HDF5, ada implementasi sampel dalam proyek HDF5-Blosc di:
https://github.com/blosc/hdf5-blosc
Ada milis resmi untuk blosc di:
[email protected] https://groups.google.com/g/blosc
Lihat terima kasih.
Nikmati data!