summaryrefslogtreecommitdiff
path: root/node_modules/mongodb/external-libs/bson/test/test_stackless_bson.js
blob: f271caceb820b8332e47e6b11fda92fa68554447 (plain)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
var Buffer = require('buffer').Buffer,
  BSON = require('../bson').BSON,
  Buffer = require('buffer').Buffer,
  BSONJS = require('../../../lib/mongodb/bson/bson').BSON,
  BinaryParser = require('../../../lib/mongodb/bson/binary_parser').BinaryParser,
  Long = require('../../../lib/mongodb/bson/long').Long,
  ObjectID = require('../../../lib/mongodb/bson/bson').ObjectID,
  Binary = require('../../../lib/mongodb/bson/bson').Binary,
  Code = require('../../../lib/mongodb/bson/bson').Code,  
  DBRef = require('../../../lib/mongodb/bson/bson').DBRef,  
  Symbol = require('../../../lib/mongodb/bson/bson').Symbol,  
  Double = require('../../../lib/mongodb/bson/bson').Double,  
  MaxKey = require('../../../lib/mongodb/bson/bson').MaxKey,  
  MinKey = require('../../../lib/mongodb/bson/bson').MinKey,  
  Timestamp = require('../../../lib/mongodb/bson/bson').Timestamp;
  assert = require('assert');

if(process.env['npm_package_config_native'] != null) return;
 
console.log("=== EXECUTING TEST_STACKLESS_BSON ===");

// Parsers
var bsonC = new BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]);
var bsonJS = new BSONJS([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]);

// Number of iterations for the benchmark
var COUNT = 10000;
// var COUNT = 1;
// Sample simple doc
var doc = {key:"Hello world", key2:"šđžčćŠĐŽČĆ", key3:'客家话', key4:'how are you doing dog!!'};
// var doc = {};
// for(var i = 0; i < 100; i++) {
//   doc['string' + i] = "dumdyms fsdfdsfdsfdsfsdfdsfsdfsdfsdfsdfsdfsdfsdffsfsdfs";  
// }

// // Calculate size
console.log(bsonC.calculateObjectSize2(doc));
console.log(bsonJS.calculateObjectSize(doc));
// assert.equal(bsonJS.calculateObjectSize(doc), bsonC.calculateObjectSize2(doc));

// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// Benchmark calculateObjectSize
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------

// Benchmark 1 JS BSON
console.log(COUNT + "x (objectBSON = bsonC.calculateObjectSize(object))")
start = new Date

for (j=COUNT; --j>=0; ) {  
  var objectBSON = bsonJS.calculateObjectSize(doc);
}

end = new Date
var opsprsecond = COUNT / ((end - start)/1000);
console.log("time = ", end - start, "ms -", COUNT / ((end - start)/1000), " ops/sec");

// Benchmark 2 C++ BSON calculateObjectSize
console.log(COUNT + "x (objectBSON = bsonC.calculateObjectSize(object))")
start = new Date

for (j=COUNT; --j>=0; ) {  
  var objectBSON = bsonC.calculateObjectSize(doc);
}

end = new Date
var opsprsecond = COUNT / ((end - start)/1000);
console.log("time = ", end - start, "ms -", COUNT / ((end - start)/1000), " ops/sec");

// Benchmark 3 C++ BSON calculateObjectSize2
console.log(COUNT + "x (objectBSON = bsonC.calculateObjectSize2(object))")
start = new Date

for (j=COUNT; --j>=0; ) {  
  var objectBSON = bsonC.calculateObjectSize2(doc);
}

end = new Date
var opsprsecond = COUNT / ((end - start)/1000);
console.log("time = ", end - start, "ms -", COUNT / ((end - start)/1000), " ops/sec");

// // Serialize the content
// var _serializedDoc1 = bsonJS.serialize(doc, true, false);
// var _serializedDoc2 = bsonC.serialize2(doc, true, false);
// console.dir(_serializedDoc1);
// console.dir(_serializedDoc2);
// assert.equal(_serializedDoc1.toString('base64'), _serializedDoc2.toString('base64'))
// 
// 
// // Benchmark 1
// console.log(COUNT + "x (objectBSON = bsonC.serialize(object))")
// start = new Date
// 
// for (j=COUNT; --j>=0; ) {  
//   // var objectBSON = bsonC.serialize2(doc, true, false);
//   var objectBSON = bsonJS.serialize(doc, true, false);
// }
// 
// end = new Date
// var opsprsecond = COUNT / ((end - start)/1000);
// console.log("bson size (bytes): ", objectbsonC.length);
// console.log("time = ", end - start, "ms -", COUNT / ((end - start)/1000), " ops/sec");
// console.log("MB/s = " + ((opsprsecond*objectbsonC.length)/1024));
// 
// // Benchmark 2
// console.log(COUNT + "x (objectBSON = bsonC.serialize(object))")
// start = new Date
// 
// for (j=COUNT; --j>=0; ) {  
//   var objectBSON = bsonC.serialize2(doc, true, false);
// }
// 
// end = new Date
// var opsprsecond = COUNT / ((end - start)/1000);
// console.log("bson size (bytes): ", objectbsonC.length);
// console.log("time = ", end - start, "ms -", COUNT / ((end - start)/1000), " ops/sec");
// console.log("MB/s = " + ((opsprsecond*objectbsonC.length)/1024));
// 
// // Benchmark 3
// console.log(COUNT + "x (objectBSON = bsonC.serialize(object))")
// start = new Date
// 
// for (j=COUNT; --j>=0; ) {  
//   var objectBSON = bsonC.serialize(doc, true, false);
// }
// 
// end = new Date
// var opsprsecond = COUNT / ((end - start)/1000);
// console.log("bson size (bytes): ", objectbsonC.length);
// console.log("time = ", end - start, "ms -", COUNT / ((end - start)/1000), " ops/sec");
// console.log("MB/s = " + ((opsprsecond*objectbsonC.length)/1024));