使用回调函数进行基准javascript执行

时间:2012-03-30 14:20:19

标签: javascript performance node.js benchmarking

我有一些JavaScript,我正在尝试对执行时间进行基准测试。

问题在于for循环快速完成,同时Item.save()方法的执行尚未完成。

如何计算时间,考虑到循环内容中的完整执行时间?

谢谢!

var start = new Date().getTime();
var Item = new Item();
for (i = 0; i < 500; i++) {
  var item = {};
  item.name = 5;
  item.id = 10;
  item.set = [];
  Item.save(item, function (err, res) {
    console.log(res);
  });
}
var elapsed = new Date().getTime() - start; 
console.log(elapsed);

编辑:这是在nodejs服务器上。

3 个答案:

答案 0 :(得分:1)

只需使用Chrome's profiling tools即可。它们让您全面了解页面上每个函数调用占用的CPU时间:

http://code.google.com/chrome/devtools/docs/cpu-profiling-files/two_profiles.png


对于Node,您可以尝试node-inspector的实验性分析器。

答案 1 :(得分:0)

处理此问题的最佳方法是修改Item.save()函数以获取开始时间,然后在最后进行比较。或者,在Item.save()上实现回调函数(succes :)。

答案 2 :(得分:0)

答案很简单:create a jsPerf test case。它允许运行异步或“延迟”测试。

或者,您可以使用Benchmark.js并手动设置延迟测试用例。

不要简单地比较两个new Date时间戳,因为这仅适用于同步测试。 (另外,this is not an accurate way of measuring things across all browsers and devices。)