/
shiftunshiftpushpop.bench.js
51 lines (45 loc) · 1.09 KB
/
shiftunshiftpushpop.bench.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
'use strict';
/**
* Benchmark related modules.
*/
var benchmark = require('benchmark')
, microtime = require('microtime');
/**
* Logger
*/
var logger = new(require('devnull'))({ timestamp: false, namespacing: 0 });
/**
* Preparation code.
*/
var arr = []
, cursor = 0;
(
new benchmark.Suite()
).add('push & shift', function test1() {
arr.push(1);
var x = arr.shift();
}).add('.length & shift', function test2() {
arr[arr.length] = 1;
var x = arr.shift();
}).add('unshift & pop', function test3() {
arr.unshift(1);
var x = arr.pop();
}).add('cursor, delete and push', function test4() {
arr.push(1);
var x = arr[cursor];
delete arr[cursor];
cursor++;
}).on('cycle', function cycle(e) {
var details = e.target;
logger.log('Finished benchmarking: "%s"', details.name);
logger.metric('Count (%d), Cycles (%d), Elapsed (%d), Hz (%d)'
, details.count
, details.cycles
, details.times.elapsed
, details.hz
);
}).on('complete', function completed() {
logger.info('Benchmark: "%s" is was the fastest.'
, this.filter('fastest').pluck('name')
);
}).run();