Skip to content

Commit 4895185

Browse files
committed
Add speed tests
Speed tests now support pre-run functions to setup test properly.
1 parent 2f53e09 commit 4895185

File tree

7 files changed

+126
-42
lines changed

7 files changed

+126
-42
lines changed

speed/core/initialize.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
var CBuffer = require('../../cbuffer'),
2+
test = require('../test');
3+
4+
test('Array ', function () {
5+
new CBuffer(4);
6+
});
7+
8+
test('Arguments ', function () {
9+
new CBuffer(1,2,3,4);
10+
});

speed/mutator/pop.js

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const SIZE = 1e5;
2+
3+
var CBuffer = require('../../cbuffer'),
4+
test = require('../test'),
5+
cb = new CBuffer(SIZE),
6+
arr = [];
7+
8+
test('pop 1e5 - CBuffer', function () {
9+
cb.empty();
10+
for (var i = 0; i < SIZE; i++) {
11+
cb.push(1);
12+
}
13+
}, function () {
14+
for (var i = SIZE; i >= 0; i--) {
15+
cb.pop();
16+
}
17+
});
18+
19+
test('pop 1e5 - Array ', function () {
20+
arr.length = 0;
21+
for (var i = 0; i < SIZE; i++) {
22+
arr.push(1);
23+
}
24+
}, function () {
25+
for (var i = SIZE; i >= 0; i--) {
26+
arr.pop();
27+
}
28+
});

speed/mutator/push.js

+15-10
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1+
const SIZE = 1e5;
2+
13
var CBuffer = require('../../cbuffer'),
2-
test = require('../test'),
3-
cb = new CBuffer(1e5),
4-
arr = new Array();
4+
test = require('../test'),
5+
cb = new CBuffer(SIZE),
6+
arr = [];
57

6-
test('push 1e5 - Array ', function () {
7-
var i = 1e5;
8-
arr.length = 0;
9-
while(arr.push(i), --i >= 0);
8+
test('push 1e5 - CBuffer', function () {
9+
cb.empty();
10+
}, function () {
11+
var i = SIZE;
12+
while (cb.push(i * 0.1), --i >= 0);
1013
});
1114

12-
test('push 1e5 - CBuffer', function () {
13-
var i = 1e5;
14-
while(cb.push(i), --i >= 0);
15+
test('push 1e5 - Array ', function () {
16+
arr.length = 0;
17+
}, function () {
18+
var i = SIZE;
19+
while (arr.push(i * 0.1), --i >= 0);
1520
});

speed/mutator/reverse.js

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
var CBuffer = require('../../cbuffer'),
2-
test = require('../test'),
3-
cb = new CBuffer(),
4-
arr = new Array(),
5-
i;
1+
const SIZE = 1e5;
62

7-
for (i = 1e5; i > 0; i--)
8-
cb.push(i);
3+
var CBuffer = require('../../cbuffer'),
4+
test = require('../test'),
5+
cb = new CBuffer(SIZE),
6+
arr = [],
7+
i;
98

10-
for (i = 1e5; i > 0; i--)
9+
for (i = SIZE; i > 0; i--) {
1110
arr.push(i);
11+
cb.push(i);
12+
}
1213

1314
test('reverse - CBuffer', function () {
1415
cb.reverse();

speed/mutator/shift.js

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const SIZE = 1e4;
2+
3+
var CBuffer = require('../../cbuffer'),
4+
test = require('../test'),
5+
cb = new CBuffer(SIZE),
6+
arr = [];
7+
8+
test('shift 1e4 - CBuffer', function () {
9+
cb.empty();
10+
for (var i = 0; i < SIZE; i++) {
11+
cb.push(1);
12+
}
13+
}, function () {
14+
for (var i = SIZE; i >= 0; i--) {
15+
cb.shift();
16+
}
17+
});
18+
19+
test('shift 1e4 - Array ', function () {
20+
arr.length = 0;
21+
for (var i = 0; i < SIZE; i++) {
22+
arr.push(1);
23+
}
24+
}, function () {
25+
for (var i = SIZE; i >= 0; i--) {
26+
arr.shift();
27+
}
28+
});

speed/mutator/unshift.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
1+
const SIZE = 1e5;
2+
13
var CBuffer = require('../../cbuffer'),
2-
test = require('../test'),
3-
cb = new CBuffer(1e5),
4-
arr = new Array();
4+
test = require('../test'),
5+
cb = new CBuffer(SIZE),
6+
arr = new Array();
57

68
test('unshift 1e5 - CBuffer', function () {
7-
var i = 1e5;
89
cb.empty();
10+
}, function () {
11+
var i = SIZE;
912
while(cb.unshift(i), --i >= 0);
1013
});
1114

1215
test('unshift 1e5 - Array ', function () {
13-
var i = 1e5;
1416
arr.length = 0;
17+
}, function () {
18+
var i = SIZE;
1519
while(arr.unshift(i), --i >= 0);
1620
});

speed/test.js

+27-19
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,38 @@
1-
module.exports = function test(name, fn) {
1+
module.exports = function test(name, setup, fn) {
22
var itter = 1;
3+
if (!fn) {
4+
fn = setup;
5+
setup = false;
6+
}
37
// first generate reliable number of itterations for test
48
(function genItter() {
5-
var i = itter,
6-
iniT = -Date.now();
7-
while(fn(), --i >= 0);
8-
iniT += Date.now();
9-
if (iniT > 100)
9+
var iniT = exec(fn, setup, itter);
10+
if (iniT > 300) {
1011
setTimeout(function () {
11-
runTest(itter, name, fn);
12+
runTest(name, itter, fn, setup);
1213
}, 100);
13-
else {
14-
if (iniT < 10)
15-
itter *= 10;
16-
else
17-
itter *= 2;
18-
setTimeout(genItter, 10);
14+
} else {
15+
if (iniT < 10) itter *= 10;
16+
else itter *= 2;
17+
setTimeout(genItter, 30);
1918
}
2019
}());
2120
};
2221

23-
24-
function runTest(itter, name, fn) {
25-
var i = itter,
26-
iniT = -Date.now();
27-
while (fn(), --i >= 0);
28-
iniT += Date.now();
22+
function runTest(name, itter, fn, setup) {
23+
var iniT = exec(fn, setup, itter);
2924
console.log(name, ':', (itter / iniT * 1000).toFixed(2).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,'), 'op/s');
3025
};
26+
27+
function exec(fn, setup, i) {
28+
var cum = 0,
29+
iniT;
30+
while (--i >= 0) {
31+
if (setup) setup();
32+
iniT = -Date.now();
33+
fn();
34+
iniT += Date.now();
35+
cum += iniT;
36+
}
37+
return cum;
38+
}

0 commit comments

Comments
 (0)