cpp serializers
1.0.0
C++ 用のさまざまなデータ シリアル化ライブラリを比較します。
このプロジェクトには、外部シリアル化ライブラリの依存関係がありません。必要なすべてのライブラリ (ブースト、スリフトなど) は自動的にダウンロードされ、ビルドされますが、すべてのコンポーネントをビルドするには十分な空きディスク容量 (約 2.3G) が必要です。このプロジェクトをビルドするには、C++14 機能をサポートするコンパイラーが必要です。プロジェクトは Clang および 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
次の結果は、Ubuntu 16.04 を実行する Intel Core i7 プロセッサを搭載した一般的なデスクトップ コンピューターで 1000000 回のシリアル化/逆シリアル化操作を 50 回実行して結果を平均したものです。使用されるライブラリの正確なバージョンは次のとおりです。
シリアライザ | オブジェクトのサイズ | 平均合計時間 |
---|---|---|
節約バイナリ | 17017 | 1190.22 |
スリフトコンパクト | 13378 | 3474.32 |
プロトブフ | 16116 | 2312.78 |
ブースト | 17470 | 1195.04 |
メッセージパック | 13402 | 2560.6 |
穀物 | 17416 | 1052.46 |
アブロ | 16384 | 4488.18 |
やっす | 17416 | 302.7 |
ヤスコンパクト | 13321 | 2063.34 |
capnproto とフラットバッファの場合、データはすでに「シリアル化された」形式で保存されており、シリアル化とは基本的に内部ストレージへのポインタを取得することを意味するため、完全なビルド/シリアル化/逆シリアル化サイクルを測定します。他のライブラリの場合、構築済みのデータ構造のシリアル化/逆シリアル化サイクルを測定します。
シリアライザ | オブジェクトのサイズ | 平均合計時間 |
---|---|---|
カプンプロト | 17768 | 400.98 |
フラットバッファ | 17632 | 491.5 |
サイズはバイト単位で測定され、時間はミリ秒単位で測定されます。