Benchmark
unknown
javascript
a year ago
1.2 kB
9
Indexable
const protobuf = require("protobufjs");
const { performance } = require('perf_hooks');
const root = protobuf.Root.fromJSON({
nested: {
EventData: {
fields: {
evt: { type: "string", id: 1 },
timestamp: { type: "int64", id: 2 }
}
}
}
});
const EventData = root.lookupType("EventData");
const jsonPayload = JSON.stringify({ evt: "click", timestamp: 29310392031 });
const stringPayload = "click|29310392031";
const protobufPayload = EventData.encode(EventData.create({ evt: "click", timestamp: 29310392031 })).finish();
function parseJSON(data) {
return JSON.parse(data);
}
function parseString(data) {
const [evt, timestamp] = data.split("|");
return { evt, timestamp: Number(timestamp) };
}
function parseProtobuf(data) {
return EventData.decode(data);
}
const iterations = 1_000_000;
console.time("JSON Parse");
for (let i = 0; i < iterations; i++) {
parseJSON(jsonPayload);
}
console.timeEnd("JSON Parse");
console.time("String Split");
for (let i = 0; i < iterations; i++) {
parseString(stringPayload);
}
console.timeEnd("String Split");
console.time("Protobuf Decode");
for (let i = 0; i < iterations; i++) {
parseProtobuf(protobufPayload);
}
console.timeEnd("Protobuf Decode");
Editor is loading...
Leave a Comment