bench: Remove _bench_timer (no loner used)
This commit is contained in:
parent
ef08f0fbb1
commit
06fbcca6bb
@ -1,88 +0,0 @@
|
|||||||
/*
|
|
||||||
* This is a simple addition to allow for higher resolution timers.
|
|
||||||
* It can be used to track time for both synchronous or asynchronous
|
|
||||||
* calls. For synchronous calls pass a callback function like so:
|
|
||||||
*
|
|
||||||
* var timer = require('./_bench_timer');
|
|
||||||
*
|
|
||||||
* timer('myTest', function() {
|
|
||||||
* for (var i = 0; i < 1e6; i++)
|
|
||||||
* // ... run something here
|
|
||||||
* }
|
|
||||||
* });
|
|
||||||
*
|
|
||||||
* For asynchronous timers just pass the name. Then run it again with
|
|
||||||
* the same name to finish it:
|
|
||||||
*
|
|
||||||
* timer('checkAsync');
|
|
||||||
* setTimeout(function() {
|
|
||||||
* timer('checkAsync');
|
|
||||||
* }, 300);
|
|
||||||
*
|
|
||||||
* When this happens all currently queued benchmarks will be paused
|
|
||||||
* until the asynchronous benchmark has completed.
|
|
||||||
*
|
|
||||||
* If the benchmark has been run with --expose_gc then the garbage
|
|
||||||
* collector will be run between each test.
|
|
||||||
*
|
|
||||||
* The setTimeout delay can also be changed by passing a value to
|
|
||||||
* timer.delay.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
var store = {};
|
|
||||||
var order = [];
|
|
||||||
var maxLength = 0;
|
|
||||||
var processing = false;
|
|
||||||
var asyncQueue = 0;
|
|
||||||
var GCd = typeof gc !== 'function' ? false : true;
|
|
||||||
|
|
||||||
function timer(name, fn) {
|
|
||||||
if (maxLength < name.length)
|
|
||||||
maxLength = name.length;
|
|
||||||
if (!fn) {
|
|
||||||
processing = false;
|
|
||||||
if (!store[name]) {
|
|
||||||
asyncQueue++;
|
|
||||||
store[name] = process.hrtime();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
displayTime(name, process.hrtime(store[name]));
|
|
||||||
asyncQueue--;
|
|
||||||
} else {
|
|
||||||
store[name] = fn;
|
|
||||||
order.push(name);
|
|
||||||
}
|
|
||||||
if (!processing && asyncQueue <= 0) {
|
|
||||||
processing = true;
|
|
||||||
setTimeout(run, timer.delay);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
timer.delay = 100;
|
|
||||||
|
|
||||||
function run() {
|
|
||||||
if (asyncQueue > 0 || order.length <= 0)
|
|
||||||
return;
|
|
||||||
if (GCd) gc();
|
|
||||||
setTimeout(function() {
|
|
||||||
var name = order.shift();
|
|
||||||
var fn = store[name];
|
|
||||||
var ini = process.hrtime();
|
|
||||||
fn();
|
|
||||||
ini = process.hrtime(ini);
|
|
||||||
displayTime(name, ini);
|
|
||||||
run();
|
|
||||||
}, timer.delay);
|
|
||||||
}
|
|
||||||
|
|
||||||
function displayTime(name, ini) {
|
|
||||||
name += ': ';
|
|
||||||
while (name.length < maxLength + 2)
|
|
||||||
name += ' ';
|
|
||||||
console.log(name + '%s \u00b5s',
|
|
||||||
(~~((ini[0] * 1e6) + (ini[1] / 1e3)))
|
|
||||||
.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"));
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = timer;
|
|
Loading…
x
Reference in New Issue
Block a user