<script src="https://rawgit.com/kawanet/msgpack-lite/master/dist/msgpack.min.js"></script>
<script src="https://rawgit.com/mcollina/msgpack5/master/dist/msgpack5.min.js"></script>
var stringData = {"glossary":{"title":"example glossary","GlossDiv":{"title":"S","GlossList":{"GlossEntry":{"ID":"SGML","SortAs":"SGML","GlossTerm":"Standard Generalized Markup Language","Acronym":"SGML","Abbrev":"ISO 8879:1986","GlossDef":{"para":"A meta-markup language, used to create markup languages such as DocBook.","GlossSeeAlso":["GML","XML"]},"GlossSee":"markup"}}}}};
var numberData = [
[1, 2, 3, 4, -1, true, null],
[3, 6, 5, 4, 1, false, 7],
[3, 2, 8, 1, 0, true, 0],
[10, 11, 12, 13, 14, false, true],
[15, 16, 17, 18, 19, true, null],
[20, 21, 22, 23, 24, false, 7],
[25, 26, 27, 28, 29, true, 0],
100, 200, 300,
[
[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1]
]
];
var jsonEncodedStrings = JSON.stringify(stringData),
jsonEncodedNumbers = JSON.stringify(numberData),
msgpackEncodedStrings = msgpack.encode(stringData),
msgpackEncodedNumbers = msgpack.encode(numberData);
var msgpack55 = msgpack5();
var result = msgpack.encode(stringData);
var result = JSON.stringify(stringData);
var result = msgpack.encode(numberData);
var result = JSON.stringify(numberData);
var result = JSON.parse(jsonEncodedStrings);
var result = msgpack.decode(msgpackEncodedStrings);
var result = msgpack55.encode(stringData);
var result = msgpack55.encode(numberData);
var result = msgpack55.decode(msgpackEncodedStrings);
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
MsgPack Strings Encode | |
JSON Strings Encode | |
MsgPack Numbers Encode | |
JSON Numbers Encode | |
JSON string decode | |
msgpack string decode | |
MsgPack5 Strings Encode | |
MsgPack5 Numbers Encode | |
msgpack5 string decode |
Test name | Executions per second |
---|---|
MsgPack Strings Encode | 182467.2 Ops/sec |
JSON Strings Encode | 2059546.0 Ops/sec |
MsgPack Numbers Encode | 338673.8 Ops/sec |
JSON Numbers Encode | 1072102.8 Ops/sec |
JSON string decode | 1114903.6 Ops/sec |
msgpack string decode | 227520.9 Ops/sec |
MsgPack5 Strings Encode | 14763.8 Ops/sec |
MsgPack5 Numbers Encode | 6511.4 Ops/sec |
msgpack5 string decode | 51401.5 Ops/sec |
Let's break down the benchmark and explain what's being tested.
Benchmark Overview
The benchmark compares the performance of three different serialization formats: MessagePack, JSON, and a custom implementation (MsgPack5). The test measures how quickly each format can serialize and deserialize complex data structures, such as arrays and objects.
Test Data
The test data consists of a single object with two properties: a
(an array) and b
(another object with multiple properties). This is repeated for each test run to generate multiple measurements.
Serialization Formats
There are three serialization formats being tested:
Benchmark Results
The benchmark results show the number of executions per second (e.g., "ExecutionsPerSecond") for each test run, measured on a Chrome 126 browser on a Windows desktop platform. The results indicate that:
Key Takeaways
The benchmark highlights the trade-offs between different serialization formats:
Keep in mind that this benchmark is specific to Chrome 126 on Windows desktop, and results might vary across other platforms, browsers, or architectures.