Skip to content

Commit

Permalink
Add speed tests
Browse files Browse the repository at this point in the history
Speed tests now support pre-run functions to setup test properly.
  • Loading branch information
trevnorris committed Nov 23, 2012
1 parent 2f53e09 commit 4895185
Show file tree
Hide file tree
Showing 7 changed files with 126 additions and 42 deletions.
10 changes: 10 additions & 0 deletions speed/core/initialize.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
var CBuffer = require('../../cbuffer'),
test = require('../test');

test('Array ', function () {
new CBuffer(4);
});

test('Arguments ', function () {
new CBuffer(1,2,3,4);
});
28 changes: 28 additions & 0 deletions speed/mutator/pop.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const SIZE = 1e5;

var CBuffer = require('../../cbuffer'),
test = require('../test'),
cb = new CBuffer(SIZE),
arr = [];

test('pop 1e5 - CBuffer', function () {
cb.empty();
for (var i = 0; i < SIZE; i++) {
cb.push(1);
}
}, function () {
for (var i = SIZE; i >= 0; i--) {
cb.pop();
}
});

test('pop 1e5 - Array ', function () {
arr.length = 0;
for (var i = 0; i < SIZE; i++) {
arr.push(1);
}
}, function () {
for (var i = SIZE; i >= 0; i--) {
arr.pop();
}
});
25 changes: 15 additions & 10 deletions speed/mutator/push.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
const SIZE = 1e5;

var CBuffer = require('../../cbuffer'),
test = require('../test'),
cb = new CBuffer(1e5),
arr = new Array();
test = require('../test'),
cb = new CBuffer(SIZE),
arr = [];

test('push 1e5 - Array ', function () {
var i = 1e5;
arr.length = 0;
while(arr.push(i), --i >= 0);
test('push 1e5 - CBuffer', function () {
cb.empty();
}, function () {
var i = SIZE;
while (cb.push(i * 0.1), --i >= 0);
});

test('push 1e5 - CBuffer', function () {
var i = 1e5;
while(cb.push(i), --i >= 0);
test('push 1e5 - Array ', function () {
arr.length = 0;
}, function () {
var i = SIZE;
while (arr.push(i * 0.1), --i >= 0);
});
17 changes: 9 additions & 8 deletions speed/mutator/reverse.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
var CBuffer = require('../../cbuffer'),
test = require('../test'),
cb = new CBuffer(),
arr = new Array(),
i;
const SIZE = 1e5;

for (i = 1e5; i > 0; i--)
cb.push(i);
var CBuffer = require('../../cbuffer'),
test = require('../test'),
cb = new CBuffer(SIZE),
arr = [],
i;

for (i = 1e5; i > 0; i--)
for (i = SIZE; i > 0; i--) {
arr.push(i);
cb.push(i);
}

test('reverse - CBuffer', function () {
cb.reverse();
Expand Down
28 changes: 28 additions & 0 deletions speed/mutator/shift.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const SIZE = 1e4;

var CBuffer = require('../../cbuffer'),
test = require('../test'),
cb = new CBuffer(SIZE),
arr = [];

test('shift 1e4 - CBuffer', function () {
cb.empty();
for (var i = 0; i < SIZE; i++) {
cb.push(1);
}
}, function () {
for (var i = SIZE; i >= 0; i--) {
cb.shift();
}
});

test('shift 1e4 - Array ', function () {
arr.length = 0;
for (var i = 0; i < SIZE; i++) {
arr.push(1);
}
}, function () {
for (var i = SIZE; i >= 0; i--) {
arr.shift();
}
});
14 changes: 9 additions & 5 deletions speed/mutator/unshift.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
const SIZE = 1e5;

var CBuffer = require('../../cbuffer'),
test = require('../test'),
cb = new CBuffer(1e5),
arr = new Array();
test = require('../test'),
cb = new CBuffer(SIZE),
arr = new Array();

test('unshift 1e5 - CBuffer', function () {
var i = 1e5;
cb.empty();
}, function () {
var i = SIZE;
while(cb.unshift(i), --i >= 0);
});

test('unshift 1e5 - Array ', function () {
var i = 1e5;
arr.length = 0;
}, function () {
var i = SIZE;
while(arr.unshift(i), --i >= 0);
});
46 changes: 27 additions & 19 deletions speed/test.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,38 @@
module.exports = function test(name, fn) {
module.exports = function test(name, setup, fn) {
var itter = 1;
if (!fn) {
fn = setup;
setup = false;
}
// first generate reliable number of itterations for test
(function genItter() {
var i = itter,
iniT = -Date.now();
while(fn(), --i >= 0);
iniT += Date.now();
if (iniT > 100)
var iniT = exec(fn, setup, itter);
if (iniT > 300) {
setTimeout(function () {
runTest(itter, name, fn);
runTest(name, itter, fn, setup);
}, 100);
else {
if (iniT < 10)
itter *= 10;
else
itter *= 2;
setTimeout(genItter, 10);
} else {
if (iniT < 10) itter *= 10;
else itter *= 2;
setTimeout(genItter, 30);
}
}());
};


function runTest(itter, name, fn) {
var i = itter,
iniT = -Date.now();
while (fn(), --i >= 0);
iniT += Date.now();
function runTest(name, itter, fn, setup) {
var iniT = exec(fn, setup, itter);
console.log(name, ':', (itter / iniT * 1000).toFixed(2).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,'), 'op/s');
};

function exec(fn, setup, i) {
var cum = 0,
iniT;
while (--i >= 0) {
if (setup) setup();
iniT = -Date.now();
fn();
iniT += Date.now();
cum += iniT;
}
return cum;
}

0 comments on commit 4895185

Please sign in to comment.