thekvs / cpp-serializers

Benchmark comparing various data serialization libraries (thrift, protobuf etc.) for C++
730 stars 111 forks source link

Added zpp serialization library. #24

Open eyalz800 opened 6 years ago

eyalz800 commented 6 years ago

Results (excluding thrift which doesn't compile on my distribution):

$ ./benchmark 300000
performing 300000 iterations

protobuf: version = 3001000
protobuf: size = 16116 bytes
protobuf: time = 5878 milliseconds

capnproto: version = 6001
capnproto: size = 17768 bytes
capnproto: time = 1182 milliseconds

boost: version = 106200
boost: size = 17470 bytes
boost: time = 2915 milliseconds

msgpack: version = 2.1.3
msgpack: size = 13402 bytes
msgpack: time = 9494 milliseconds

cereal: size = 17416 bytes
cereal: time = 2321 milliseconds

avro: size = 16384 bytes
avro: time = 11097 milliseconds

flatbuffers: size = 17632 bytes
flatbuffers: time = 1000 milliseconds

yas: version = 6.0.2
yas: size = 17416 bytes
yas: time = 780 milliseconds

yas-compact: version = 6.0.2
yas-compact: size = 13321 bytes
yas-compact: time = 5971 milliseconds

zpp: version = v0.1
zpp: size = 17008 bytes
zpp: time = 598 milliseconds
$ ./benchmark 1000000
performing 1000000 iterations

protobuf: version = 3001000
protobuf: size = 16116 bytes
protobuf: time = 19182 milliseconds

capnproto: version = 6001
capnproto: size = 17768 bytes
capnproto: time = 3735 milliseconds

boost: version = 106200
boost: size = 17470 bytes
boost: time = 9969 milliseconds

msgpack: version = 2.1.3
msgpack: size = 13402 bytes
msgpack: time = 32170 milliseconds

cereal: size = 17416 bytes
cereal: time = 7550 milliseconds

avro: size = 16384 bytes
avro: time = 35806 milliseconds

flatbuffers: size = 17632 bytes
flatbuffers: time = 3257 milliseconds

yas: version = 6.0.2
yas: size = 17416 bytes
yas: time = 2575 milliseconds

yas-compact: version = 6.0.2
yas-compact: size = 13321 bytes
yas-compact: time = 19590 milliseconds

zpp: version = v0.1
zpp: size = 17008 bytes
zpp: time = 1949 milliseconds

Remark: seems that yas is wrongly tested, because it has no opportunity to reserve memory as all other tests do, I made also a test that does not reserve memory and got the following results, for a fair comparison with yas:

$ ./benchmark 300000
performing 300000 iterations

zpp: version = v0.1
zpp: size = 17008 bytes
zpp: time = 712 milliseconds
$ ./benchmark 1000000
performing 1000000 iterations

zpp: version = v0.1
zpp: size = 17008 bytes
zpp: time = 2344 milliseconds
eyalz800 commented 5 years ago

@thekvs is there any chance we can pull this in?

thekvs commented 5 years ago

Hi @eyalz800!

Sorry, I don't have resources to include and maintain every possible C++ serializer in the world, there are dozens of them (maybe even more). I try to keep in benchmark only a major and widespread one. I suggest you to maintain your own fork. Also I can reference your serializer in the README.

eyalz800 commented 5 years ago

@thekvs that's fair. I was just trying to show up in your benchmark main page, I thought that the project is fairly inactive for long periods of time and I didn't know that adding my library will use much resources. Thank you