diff --git a/docs/html/md__benchmarks.html b/docs/html/md__benchmarks.html index e17ec0821..4c8a27c86 100644 --- a/docs/html/md__benchmarks.html +++ b/docs/html/md__benchmarks.html @@ -54,29 +54,30 @@ $(document).ready(function(){initNavTree('md__benchmarks.html','');});

Comparing against other serialization solutions, running on Windows 7 64bit. We use the LITE runtime for Protocol Buffers (less code / lower overhead), Rapid JSON (one of the fastest C++ JSON parsers around), and pugixml, also one of the fastest XML parsers.

+

We also compare against code that doesn't use a serialization library at all (the column "Raw structs"), which is what you get if you write hardcoded code that just writes structs. This is the fastest possible, but of course is not cross platform nor has any kind of forwards / backwards compatibility.

We compare against Flatbuffers with the binary wire format (as intended), and also with JSON as the wire format with the optional JSON parser (which, using a schema, parses JSON into a binary buffer that can then be accessed as before).

The benchmark object is a set of about 10 objects containing an array, 4 strings, and a large variety of int/float scalar values of all sizes, meant to be representative of game data, e.g. a scene format.

- + - + - + - + - + - + - + - + - + - +
FlatBuffers (binary) Protocol Buffers LITE Rapid JSON FlatBuffers (JSON) pugixml
FlatBuffers (binary) Protocol Buffers LITE Rapid JSON FlatBuffers (JSON) pugixml Raw structs
Decode + Traverse + Dealloc (1 million times, seconds) 0.08 302 583 105 196
Decode + Traverse + Dealloc (1 million times, seconds) 0.08 302 583 105 196 0.02
Decode / Traverse / Dealloc (breakdown) 0 / 0.08 / 0 220 / 0.15 / 81 294 / 0.9 / 287 70 / 0.08 / 35 41 / 3.9 / 150
Decode / Traverse / Dealloc (breakdown) 0 / 0.08 / 0 220 / 0.15 / 81 294 / 0.9 / 287 70 / 0.08 / 35 41 / 3.9 / 150 0 / 0.02 / 0
Encode (1 million times, seconds) 3.2 185 650 169 273
Encode (1 million times, seconds) 3.2 185 650 169 273 0.15
Wire format size (normal / zlib, bytes) 344 / 220 228 / 174 1475 / 322 1029 / 298 1137 / 341
Wire format size (normal / zlib, bytes) 344 / 220 228 / 174 1475 / 322 1029 / 298 1137 / 341 312 / 187
Memory needed to store decoded wire (bytes / blocks) 0 / 0 760 / 20 65689 / 4 328 / 1 34194 / 3
Memory needed to store decoded wire (bytes / blocks) 0 / 0 760 / 20 65689 / 4 328 / 1 34194 / 3 0 / 0
Transient memory allocated during decode (KB) 0 1 131 4 34
Transient memory allocated during decode (KB) 0 1 131 4 34 0
Generated source code size (KB) 4 61 0 4 0
Generated source code size (KB) 4 61 0 4 0 0
Field access in handwritten traversal code typed accessors typed accessors manual error checking typed accessors manual error checking
Field access in handwritten traversal code typed accessors typed accessors manual error checking typed accessors manual error checking typed but no safety
Library source code (KB) 15 some subset of 3800 87 43 327
Library source code (KB) 15 some subset of 3800 87 43 327 0

Some other serialization systems we compared against but did not benchmark (yet), in rough order of applicability: