A easy benchmark framework for Javascript code.
Installing with npm:
$ npm install benchmarkjs --save-dev
This module don't have dependencies.
In a browser:
<script src="benchmarkjs.js"></script>
In Node.js:
var Benchmark = require('benchmarkjs');
Enable Node.js V8 native syntax for optimization check with this parameter:
node --allow-natives-syntax
Usage example:
var benchmarkjs = require('benchmarkjs');
benchmarkjs.options({
testTime: 4000
});
var bigArray1 = new Array(1000);
benchmarkjs('n < max', function () {
for (var n = 0, max = bigArray1.length; n < max; n++) {
bigArray1[n] = 0 | Math.random() * 1000;
}
});
var bigArray2 = new Array(1000);
benchmarkjs('n < hugeArray2.length', function () {
for (var n = 0; n < bigArray2.length; n++) {
bigArray2[n] = 0 | Math.random() * 1000;
}
});
console.log(benchmarkjs.results);
The result is similar to this:
[ { name: 'n < max', // test name
elapsed: 4395, // total time to test
checks: 2, // internal time checks
totalIterations: 484811, // total executions
persecondIterations: 110309, // execution per second
isOptimized: null, // have value only with node and the paramenter --allow-natives-syntax
diff: '0%' }, // difference with the best case
{ name: 'n < hugeArray2.length', // test name
elapsed: 4325, // total time to test
checks: 2, // internal time checks
totalIterations: 475535, // total executions
persecondIterations: 109950, // execution per second
isOptimized: null, // have value only with node and the paramenter --allow-natives-syntax
diff: '0.33%' } ] // difference with the best case
isOptimized can have these values:
1 - "optimized"
2 - "not optimized"
3 - "always optimized"
4 - "never optimized"
6 - "maybe deoptimized"
7 - "turbofan optimized"
- Pablo Almunia (github:pabloalmunia or @pabloalmunia)