Asynchronous 有没有办法在Node.js或任何其他类型的函数中可靠地计时SQL查询?

Asynchronous 有没有办法在Node.js或任何其他类型的函数中可靠地计时SQL查询?,asynchronous,node.js,instrumentation,Asynchronous,Node.js,Instrumentation,我正试图在node中理解aysnc函数。通过Node.js计算DB查询运行所需的时间是一种很好的方法 因为应用的用法是计算一组算法运行所需的时间。我从一个系统中获取输入并将其导入另一个系统。对第一组的调整可能会输出更多或更少的数据。因此,测量整个计时的响应可能不太准确。我试图测量每个函数的运行时间 任何关于这个理论的建议,如果你能尝试学习这个我认为很重要的概念,我将不胜感激 在同步上下文中,您可以执行以下操作: var time = function(fn){ var start = D

我正试图在node中理解aysnc函数。通过Node.js计算DB查询运行所需的时间是一种很好的方法

因为应用的用法是计算一组算法运行所需的时间。我从一个系统中获取输入并将其导入另一个系统。对第一组的调整可能会输出更多或更少的数据。因此,测量整个计时的响应可能不太准确。我试图测量每个函数的运行时间


任何关于这个理论的建议,如果你能尝试学习这个我认为很重要的概念,我将不胜感激

在同步上下文中,您可以执行以下操作:

 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
 });

当然,您可以将这两个函数合并在一起,但这提供了一些有用的泛型(您可以将其用于任何函数)。

谢谢Adrien!在args上使用拼接非常平滑。这将帮助我在项目中,我正试图破解了很多!