前几天我刚刚发现 Node.js 有一个高分辨率的计时器函数,叫做
这个计时器据说具有纳秒级分辨率,这太棒了,因为现在我可以比 Date 模块更准确地计时。
无论如何,我正在使用这个新计时器来尝试制作一个 Timer 对象,该对象可以为传递给它的不同任务计时。不幸的是,我得到了一些奇怪的负面结果,这让我质疑这个所谓的“高分辨率”计时器的准确性和可靠性。
让我向您展示我的代码:
hrTimer.js
//IMPORTS
var async = require('async');
HrTimer = {
time: function(task) {
var t1 = t2 = '';
async.series([
function(callback){
t1 = process.hrtime();
callback();
},
task,
function(callback){
t2 = process.hrtime();
callback();
}
]);
var t1 = t1[0].toString() + '.' + t1[1].toString();
var t2 = t2[0].toString() + '.' + t2[1].toString();
var dif = parseFloat(t2)-parseFloat(t1);
if(dif < 0){
debugger;
console.log(t1);
console.log(t2);
}
return dif;
}
};
module.exports = HrTimer;
所以有时它会进入 dif < 0 的代码块。如果异步模块正常工作并且计时器正常工作,这不应该发生。有什么帮助吗?