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
Created
September 17, 2012 07:44
-
-
Save skenqbx/3736060 to your computer and use it in GitHub Desktop.
Benchmark
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment