Bandingkan berbagai pustaka serialisasi data untuk C++.
Proyek ini tidak memiliki dependensi pustaka serialisasi eksternal. Semua perpustakaan yang diperlukan (boost, thrift, dll.) diunduh dan dibuat secara otomatis, tetapi Anda memerlukan ruang disk kosong yang cukup (sekitar 2,3G) untuk membangun semua komponen. Untuk membangun proyek ini Anda memerlukan kompiler yang mendukung fitur C++14. Proyek diuji dengan kompiler Dentang dan GCC.
git clone https://github.com/thekvs/cpp-serializers.git
cd cpp-serializers
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
$ ./benchmark -h
Benchmark various C++ serializers
Usage:
benchmark [OPTION...]
-h, --help show this help and exit
-l, --list show list of supported serializers
-c, --csv output in CSV format
-i, --iterations arg number of serialize/deserialize iterations
-s, --serializers arg comma separated list of serializers to benchmark
$ ./benchmark -i 100000
$ ./benchmark -i 100000 -s protobuf
$ ./benchmark -i 100000 -s protobuf,cereal
Hasil berikut diperoleh dengan menjalankan 1000.000 operasi serialisasi-deserialisasi sebanyak 50 kali dan kemudian rata-rata hasil pada komputer desktop biasa dengan prosesor Intel Core i7 yang menjalankan Ubuntu 16.04. Versi persis perpustakaan yang digunakan adalah:
pembuat serial | ukuran objek | rata-rata waktu keseluruhan |
---|---|---|
penghematan-biner | 17017 | 1190.22 |
hemat-kompak | 13378 | 3474.32 |
protobuf | 16116 | 2312.78 |
mendorong | 17470 | 1195.04 |
paket pesan | 13402 | 2560.6 |
sereal | 17416 | 1052.46 |
avro | 16384 | 4488.18 |
ya | 17416 | 302.7 |
yas-kompak | 13321 | 2063.34 |
Untuk capnproto dan flatbuffer karena mereka sudah menyimpan data dalam bentuk "serial" dan serialisasi pada dasarnya berarti mendapatkan penunjuk ke penyimpanan internal, kami mengukur siklus build /serialize/deserialize penuh. Dalam kasus perpustakaan lain, kami mengukur siklus serialisasi/deserialisasi dari struktur data yang sudah dibangun.
pembuat serial | ukuran objek | rata-rata waktu keseluruhan |
---|---|---|
capnproto | 17768 | 400,98 |
buffer datar | 17632 | 491.5 |
Ukuran diukur dalam byte, waktu diukur dalam milidetik.