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
다음 결과는 1000000번의 직렬화-역직렬화 작업을 50회 실행한 후 Ubuntu 16.04를 실행하는 Intel Core i7 프로세서가 장착된 일반적인 데스크탑 컴퓨터에서 결과를 평균화한 것입니다. 사용된 라이브러리의 정확한 버전은 다음과 같습니다.
시리얼라이저 | 물체의 크기 | 평균 총 시간 |
---|---|---|
중고품 바이너리 | 17017 | 1190.22 |
절약형 컴팩트 | 13378 | 3474.32 |
프로토부프 | 16116 | 2312.78 |
후원 | 17470 | 1195.04 |
msgpack | 13402 | 2560.6 |
시리얼 | 17416 | 1052.46 |
아브로 | 16384 | 4488.18 |
야 | 17416 | 302.7 |
야스 컴팩트 | 13321 | 2063.34 |
capnproto 및 flatbuffers의 경우 이미 데이터를 "직렬화된" 형식으로 저장하고 직렬화는 기본적으로 내부 저장소에 대한 포인터를 가져오는 것을 의미하므로 전체 빌드 /직렬화/역직렬화 주기를 측정합니다. 다른 라이브러리의 경우 이미 구축된 데이터 구조의 직렬화/역직렬화 주기를 측정합니다.
시리얼라이저 | 물체의 크기 | 평균 총 시간 |
---|---|---|
캡프로토 | 17768 | 400.98 |
플랫버퍼 | 17632 | 491.5 |
크기는 바이트 단위로 측정되고 시간은 밀리초 단위로 측정됩니다.