After part 2 I received a couple requests to add in a couple other rust serialization libraries. So one thing led to another, and now I’ve got a benchmark suite I’m calling rust-serialization-benchmarks. Really creative name, eh? This includes all the other benchmarks I referred to previously, as well as capnproto, msgpack, and protobuf.

language library format serialization (MB/s) deserialization (MB/s) C++ rapidjson JSON (dom) 233 102 C++ rapidjson JSON (sax) 233 124 Go encoding/json JSON 54.93 16.72 Go ffjson JSON 126.40 (not supported) Go goprotobuf Protocol Buffers 138.27 91.18 Go gogoprotobuf Protocol Buffers 472.69 295.33 Go go-capnproto Cap’n Proto 2226.71 450 Go go-capnproto Cap’n Proto (zero copy) 2226.71 1393.3 Rust serialize::json JSON 89 18 Rust rust-msgpack MessagePack 160 52 Rust rust-protobuf Protocol Buffers 177 70 Rust capnproto-rust Cap’n Proto (unpacked) 1729 1276 Rust capnproto-rust Cap’n Proto (packed) 398 246

I upgraded to OS X Yosemite, so I think that brought these numbers down overall from the last post.