Home

Awesome

Benchmarks against Serialization Systems

Build Status

Characteristics

Protocol Buffers (proto3)Thrift (compact protocol)AvroCSVJSONMessagePack
Schema-less?NoNoNoNoYesYes
Require compiling schema in advance?YesYesNoNoNoNo

Run benchmarks

$ sbt $project/jmh:run

where $project is one of the name of sbt sub project (e.g. avroBench)

Sample data file generation

$ sbt $project/run

Schemas

The schemas used in this benchmark are under schema

Results

NOTE: This benchmark is taken place under the specific condition, results may be different under the other conditions.

Benchmark setup

Average time to encode 100,000 records in milli seconds.

Protocol Buffers (proto3)Thrift (compact protocol)AvroCSVJSON (with jsoniter-scala)JSON (with circe)MessagePack (jackson-module-msgpack)MessagePack (msgpack4z)
43.0235.8232.6116.874.6488.7354.8358.0

Average time to decode 100,000 binary records in milli seconds.

Protocol Buffers (proto3)Thrift (compact protocol)AvroCSVJSON (with jsoniter-scala)JSON (with circe)MessagePack (jackson-module-msgpack)MessagePack (msgpack4z)
139.5162.9586.0160.8151.3503.5414.9609.5

Data size of 100,000 encoded records in MB.

Protocol Buffers (proto3)Thrift (compact protocol)AvroCSVJSONMessagePack
18.518.316.717.432.225.7