/
thousand.js
73 lines (61 loc) · 1.63 KB
/
thousand.js
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
var Benchmark = require("benchmark");
var Deque = require("../js/deque.js");
var NodeDeque= require("deque").Dequeue;
var DequeBuiltIn = Array;
function printPlatform() {
console.log("\nPlatform info:");
var os = require("os");
var v8 = process.versions.v8;
var node = process.versions.node;
var plat = os.type() + " " + os.release() + " " + os.arch() + "\nNode.JS " + node + "\nV8 " + v8;
var cpus = os.cpus().map(function(cpu){
return cpu.model;
}).reduce(function(o, model){
if( !o[model] ) o[model] = 0;
o[model]++;
return o;
}, {});
cpus = Object.keys(cpus).map(function( key ){
return key + " \u00d7 " + cpus[key];
}).join("\n");
console.log(plat + "\n" + cpus + "\n");
}
var deque = new Deque();
var nodeDeque = new NodeDeque();
var dequeBuiltIn = new DequeBuiltIn();
var l = 1000;
while(--l) {
deque.push(l);
nodeDeque.push(l);
dequeBuiltIn.push(l);
}
var suite = new Benchmark.Suite();
suite
.add("double-ended-queue", function(){
var a = deque.shift();
var b = deque.shift();
var c = deque.shift();
deque.push(a);
deque.push(b);
deque.push(c);
})
.add("node-deque", function(){
var a = nodeDeque.shift();
var b = nodeDeque.shift();
var c = nodeDeque.shift();
nodeDeque.push(a);
nodeDeque.push(b);
nodeDeque.push(c);
})
.add("built-in array", function(){
var a = dequeBuiltIn.shift();
var b = dequeBuiltIn.shift();
var c = dequeBuiltIn.shift();
dequeBuiltIn.push(a);
dequeBuiltIn.push(b);
dequeBuiltIn.push(c);
})
.on("cycle", function(e) {
console.log("" + e.target);
})
.run();