我正试图围绕节点中的aysnc函数。它有一个很好的方法来计算数据库查询通过Node.js运行多长时间。
对于应用的用法是计算一组算法运行所需的时间。我从一个输入并将其输入另一个输入。对第一组的调整可以输出更多或更少的数据。所以测量总体时间的响应可能不太准确。我正在尝试测量每个函数的运行时间。
关于理论的任何指示*都会赞赏尝试学习我认为重要的概念!
答案 0 :(得分:6)
在同步上下文中,您将执行以下操作:
var time = function(fn){
var start = Date.now();
fn();
return start - Date.now()
}
// which would be called this way :
var elapsed = time(function(){
// do something
}
// do something with elapsed
// do something else
异步版本是:
var time = function(fn, cb){
var start = Date.now();
fn(null, function(){
var args = [].slice.call(arguments);
args.splice(1, 0, Date.now() - start);
cb.apply(this,args);
})
}
// which you would use this way:
time(function(err, cb){
// do something
cb(/* params */);
}, function(err, elapsed /*, params */){
// do something with elapsed
// do something else
});
当然,您可以将两个函数合并在一起,但这会提供一些有用的通用性(您可以将它与任何函数一起使用)。