fcs
2025-04-10 0163870d662dc5b7d69ceff977490ede594f7d82
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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});
};