先日、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のコードブロックに入ることがあります。非同期モジュールが正しく機能し、タイマーが正しく機能している場合、これは発生しないはずです。何か助けはありますか?