我有一些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服务器上。
答案 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。)