cpp serializers
1.0.0
比較 C++ 的各種資料序列化函式庫。
該專案沒有任何外部序列化庫相依性。所有(boost、thrift 等)所需的庫都會自動下載並構建,但您需要足夠的可用磁碟空間(約 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 |
yas-緊湊型 | 13321 | 2063.34 |
對於 capnproto 和 flatbuffers,由於它們已經以“序列化”形式存儲數據,並且序列化基本上意味著獲取指向內部存儲的指針,因此我們測量完整的構建/序列化/反序列化週期。對於其他庫,我們測量已建立的資料結構的序列化/反序列化週期。
序列器 | 物體的大小 | 平均。總時間 |
---|---|---|
卡普恩原型 | 17768 | 400.98 |
平面緩衝區 | 17632 | 491.5 |
大小以位元組為單位,時間以毫秒為單位。