arnaucube
arnaucube/comunicationLeapPublic Self-hosted repository
comunicationLeap/node_modules/socket.io-parser/bench/index.js
node_modules/socket.io-parser/bench/index.jsRaw
 1var Benchmark = require('benchmark');
 2var parser = require('../index');
 3
 4function test(packet, deferred) {
 5  var encoder = new parser.Encoder();
 6  var decoder = new parser.Decoder();
 7  encoder.encode(packet, function(encodedPackets) {
 8    var decoder = new parser.Decoder();
 9    decoder.on('decoded', function(packet) {
10      deferred.resolve();
11    });
12
13    decoder.add(encodedPackets[0]);
14  });
15}
16
17var dataObject = {
18  'a': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
19  'b': 'xxxyyyzzzalsdfalskdjfalksdjfalksdjfalksdjfjjfjfjfjjfjfjfj',
20  'data': {
21    'is': 'cool',
22    'or': {
23      'is': {
24        'it': true
25      }
26    }
27   }
28};
29var bigArray = [];
30for (var i = 0; i < 250; i++) {
31  bigArray.push(dataObject);
32}
33
34
35
36module.exports = function(callback) {
37  var suite = new Benchmark.Suite();
38
39  suite.add('small json parse', {defer: true, fn: function(deferred) {
40    var packet = {
41      type: parser.EVENT,
42      nsp: '/bench',
43      data: dataObject
44    };
45    test(packet, deferred);
46  }})
47  .add('big json parse', {defer: true, fn: function(deferred) {
48    var packet = {
49      type: parser.EVENT,
50      nsp: '/bench',
51      data: bigArray
52    };
53    test(packet, deferred);
54  }})
55  .add('json with small binary parse', {defer: true, fn: function(deferred) {
56    var packet = {
57      type: parser.EVENT,
58      nsp: '/bench',
59      data: {'a': [1, 2, 3], 'b': 'xxxyyyzzz', 'data': new Buffer(1000)}
60    };
61    test(packet, deferred);
62  }})
63  .add('json with big binary parse', {defer: true, fn: function(deferred) {
64    var bigBinaryData = {
65      bin1: new Buffer(10000),
66      arr: bigArray,
67      bin2: new Buffer(10000),
68      bin3: new Buffer(10000)
69    };
70    var packet = {
71      type: parser.EVENT,
72      nsp: '/bench',
73      data: bigBinaryData
74    };
75    test(packet, deferred);
76  }})
77  .on('complete', function() {
78    callback(this);
79  })
80  .run({'async': true});
81};