GT2/GT2-Android/node_modules/immediate/bench.js

90 lines
1.8 KiB
JavaScript

var immediate = require('./lib/index');
function bench (num, done) {
var i = 1e3;
var time = process.hrtime();
function next(i) {
var total = 50000;
var todo = total;
function nextInt1() {
if (--todo !== 0) {
return;
}
immediate(next, i -1);
}
function nextInt2() {
if (--todo !== 0) {
return;
}
immediate(next, i -1);
}
function nextInt3() {
if (--todo !== 0) {
return;
}
immediate(next, i -1);
}
function nextInt4() {
if (--todo !== 0) {
return;
}
immediate(next, i -1);
}
function nextInt5() {
if (--todo !== 0) {
return;
}
immediate(next, i -1);
}
if (i > 0) {
var j = 0;
while (j++ < total) {
switch (j % 5) {
case 0:
immediate(nextInt1);
break;
case 1:
immediate(nextInt2, 'arg');
break;
case 2:
immediate(nextInt3, 'arg', 'another arg');
break;
case 3:
immediate(nextInt4, 'arg', 'another arg', 'third arg');
break;
case 4:
immediate(nextInt5, 'arg', 'another arg', 'third arg', '4th arg');
break;
}
}
} else {
after();
}
}
immediate(next, i);
function after() {
var diff = process.hrtime(time);
var units = 'nanoseconds';
var diftime = diff[0] * 1e9 + diff[1];
if (diftime > 1e6) {
diftime /= 1e6;
units = 'milliseconds';
}
if (diftime > 1000) {
diftime /= 1000;
units = 'seconds';
}
console.log(`Benchmark ${num < 10 ? ('0' + num): num} took ${diftime.toFixed(4)} ${units}`);
done(num);
}
}
var runs = 20;
function afterRun(num) {
if (num === runs) {
return;
}
bench(num + 1, afterRun);
}
afterRun(0);