in javascript/benchmark/index.js [203:276]
async function start() {
const { encode: protobufEncode, decode: protobufDecode } = await loadProto();
const protobufBf = protobufEncode(sample);
{
console.log('sample json size: ', `${(sampleJson.length / 1000).toFixed()}k`);
assert(JSON.stringify(protobufDecode(protobufBf)) === sampleJson);
assert.deepEqual(deserialize(furyAb), sample);
}
let result = {
fury: {
serialize: 0,
deserialize: 0,
},
protobuf: {
serialize: 0,
deserialize: 0,
},
json: {
serialize: 0,
deserialize: 0,
}
}
{
var suite = new Benchmark.Suite();
suite
.add("fury", function () {
serializeVolatile(sample).dispose();
})
.add("json", function () {
JSON.stringify(sample);
})
.add("protobuf", function () {
protobufEncode(sample);
})
.on("complete", function (e) {
e.currentTarget.forEach(({ name, hz }) => {
result[name].serialize = Math.ceil(hz / 10000);
});
})
.run({ async: false });
}
{
var suite = new Benchmark.Suite();
suite
.add("fury", function () {
deserialize(furyAb);
})
.add("json", function () {
JSON.parse(sampleJson);
})
.add("protobuf", function () {
protobufDecode(protobufBf);
})
.on("complete", function (e) {
e.currentTarget.forEach(({ name, hz }) => {
result[name].deserialize = Math.ceil(hz / 10000);
});
})
.run({ async: false });
}
console.table(result);
spawn(
`python3`,
['draw.py', result.json.serialize, result.json.deserialize, result.protobuf.serialize, result.protobuf.deserialize, result.fury.serialize, result.fury.deserialize],
{
cwd: __dirname,
}
)
}