Files
socket.io/bench/index.js
2020-09-22 22:42:17 +02:00

80 lines
1.9 KiB
JavaScript

const Benchmark = require('benchmark');
const parser = require('..');
function test(packet, deferred) {
const encoder = new parser.Encoder();
encoder.encode(packet, encodedPackets => {
const decoder = new parser.Decoder();
decoder.on('decoded', packet => {
deferred.resolve();
});
for (const encodedPacket of encodedPackets) {
decoder.add(encodedPacket);
}
});
}
const dataObject = [{
'a': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
'b': 'xxxyyyzzzalsdfalskdjfalksdjfalksdjfalksdjfjjfjfjfjjfjfjfj',
'data': {
'is': 'cool',
'or': {
'is': {
'it': true
}
}
}
}];
const bigArray = [];
for (let i = 0; i < 250; i++) {
bigArray.push(dataObject);
}
const suite = new Benchmark.Suite();
suite
.add('small json parse', {defer: true, fn: deferred => {
const packet = {
type: parser.EVENT,
nsp: '/bench',
data: dataObject
};
test(packet, deferred);
}})
.add('big json parse', {defer: true, fn: deferred => {
const packet = {
type: parser.EVENT,
nsp: '/bench',
data: bigArray
};
test(packet, deferred);
}})
.add('json with small binary parse', {defer: true, fn: deferred => {
const packet = {
type: parser.BINARY_EVENT,
nsp: '/bench',
data: [{'a': [1, 2, 3], 'b': 'xxxyyyzzz', 'data': Buffer.allocUnsafe(1000)}]
};
test(packet, deferred);
}})
.add('json with big binary parse', {defer: true, fn: deferred => {
const bigBinaryData = [{
bin1: Buffer.allocUnsafe(10000),
arr: bigArray,
bin2: Buffer.allocUnsafe(10000),
bin3: Buffer.allocUnsafe(10000)
}];
const packet = {
type: parser.BINARY_EVENT,
nsp: '/bench',
data: bigBinaryData
};
test(packet, deferred);
}})
.on('cycle', function(event) {
console.log(String(event.target));
})
.run({'async': true});