Skip to content

Instantly share code, notes, and snippets.

@skenqbx
Created September 17, 2012 07:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save skenqbx/3736060 to your computer and use it in GitHub Desktop.
Save skenqbx/3736060 to your computer and use it in GitHub Desktop.
Benchmark
function bench(stack, numRuns) {
var results = {};
var i, j, fn, timestamp;
for (i = 0; i < stack.length; ++i) {
results[stack[i].name] = {
sum: 0,
mean: 0
};
fn = stack[i];
for (j = 0; j < numRuns; ++j) {
timestamp = process.hrtime();
fn();
timestamp = process.hrtime(timestamp);
// results[stack[i].name].sum += timestamp[0] + timestamp[1] / 1e9;
results[fn.name].sum += timestamp[1];
}
results[fn.name].mean = results[fn.name].sum / numRuns;
}
return results;
}
var count = 1000;
var stack = [
function test_empty_ref_1() {},
function test_normalForLoop() {
var length = count;
for (var i = 0; i < length; ++i) {}
},
function test_predefineForLoop() {
var i, length = count;
for (i = 0; i < length; ++i) {}
},
function test_whileLoop() {
var i, length = count;
while (++i < length) {}
},
function test_doWhileLoop() {
var i, length = count;
do {} while (++i < length);
},
function test_concat() {
var x = '1' + '2' + '3' + '4' + '5' + '6' + '7' + '8' + '9' + '0';
},
function test_join() {
var x = [];
x.push('1', '2', '3', '4', '5', '6', '7', '8', '9', '0');
x = x.join('');
},
function test_parseInt() {
var x = '1234';
x = parseInt(x, 10);
},
function test_castInt() {
var x = '1234';
x = +x;
},
function test_empty_ref_2() {}
];
var i, results = bench(stack, 1e6);
for (i = 0; i < stack.length; ++i) {
console.log(stack[i].name);
console.log(' mean: %s', results[stack[i].name].mean);
}
test_empty_ref_1
                   mean: 681.747666
test_normalForLoop
                   mean: 2859.219527
test_predefineForLoop
                   mean: 2839.495833
test_whileLoop
                   mean: 683.830738
test_doWhileLoop
                   mean: 668.78133
test_concat
                   mean: 949.704838
test_join
                   mean: 1066.524476
test_parseInt
                   mean: 690.45971
test_castInt
                   mean: 765.852366
test_empty_ref_2
                   mean: 653.450886
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment