You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

81 lines
1.9 KiB

var Benchmark = require('benchmark');
var parser = require('../index');
function test(packet, deferred) {
var encoder = new parser.Encoder();
var decoder = new parser.Decoder();
encoder.encode(packet, function(encodedPackets) {
var decoder = new parser.Decoder();
decoder.on('decoded', function(packet) {
deferred.resolve();
});
decoder.add(encodedPackets[0]);
});
}
var 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
}
}
}
};
var bigArray = [];
for (var i = 0; i < 250; i++) {
bigArray.push(dataObject);
}
module.exports = function(callback) {
var suite = new Benchmark.Suite();
suite.add('small json parse', {defer: true, fn: function(deferred) {
var packet = {
type: parser.EVENT,
nsp: '/bench',
data: dataObject
};
test(packet, deferred);
}})
.add('big json parse', {defer: true, fn: function(deferred) {
var packet = {
type: parser.EVENT,
nsp: '/bench',
data: bigArray
};
test(packet, deferred);
}})
.add('json with small binary parse', {defer: true, fn: function(deferred) {
var packet = {
type: parser.EVENT,
nsp: '/bench',
data: {'a': [1, 2, 3], 'b': 'xxxyyyzzz', 'data': new Buffer(1000)}
};
test(packet, deferred);
}})
.add('json with big binary parse', {defer: true, fn: function(deferred) {
var bigBinaryData = {
bin1: new Buffer(10000),
arr: bigArray,
bin2: new Buffer(10000),
bin3: new Buffer(10000)
};
var packet = {
type: parser.EVENT,
nsp: '/bench',
data: bigBinaryData
};
test(packet, deferred);
}})
.on('complete', function() {
callback(this);
})
.run({'async': true});
};