<script src="https://rawgit.com/kawanet/msgpack-lite/master/dist/msgpack.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 result = msgpack.encode(stringData);
var result = JSON.stringify(stringData);
var result = msgpack.encode(numberData);
var result = JSON.stringify(numberData);
var result = msgpack.decode(msgpackEncodedNumbers);
var result = msgpack.decode(msgpackEncodedStrings);
var result = JSON.parse(jsonEncodedNumbers);
var result = JSON.parse(jsonEncodedStrings);
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
MsgPack Strings Encode | |
JSON Strings Encode | |
MsgPack Numbers Encode | |
JSON Numbers Encode | |
MsgPack Numbers decode | |
Msgpack String decode | |
JSON parse numbers | |
JSON parse strings |
Test name | Executions per second |
---|---|
MsgPack Strings Encode | 342990.2 Ops/sec |
JSON Strings Encode | 2092594.2 Ops/sec |
MsgPack Numbers Encode | 399532.0 Ops/sec |
JSON Numbers Encode | 1302370.8 Ops/sec |
MsgPack Numbers decode | 1130025.4 Ops/sec |
Msgpack String decode | 350388.0 Ops/sec |
JSON parse numbers | 1056902.1 Ops/sec |
JSON parse strings | 1232080.2 Ops/sec |
Let's break down the provided benchmark and explain what is being tested, compared options, pros and cons, and other considerations.
Benchmark Definition
The benchmark is designed to compare the performance of two serialization formats: JSON (JavaScript Object Notation) and MessagePack. The test cases are divided into four categories:
Comparison Options
The comparison options are:
JSON.stringify()
to encode a string object.JSON.stringify()
to encode an array of numbers.msgpack.encode()
function to encode a string object.msgpack.encode()
function to encode an array of numbers.JSON.parse()
to decode a string encoded using JSON.stringify()
.JSON.parse()
to decode an array of numbers encoded using JSON.stringify()
.msgpack.decode()
function to decode a string encoded using msgpack.encode()
.msgpack.decode()
function to decode an array of numbers encoded using msgpack.encode()
.Pros and Cons
Here are some pros and cons of each option:
Other Considerations
When choosing between JSON and MsgPack, consider the following factors:
Overall, the choice between JSON and MsgPack depends on your specific use case, performance requirements, and compatibility constraints.