基准JavaScript执行与callback函数

我有一些JavaScript,我试图基准执行所需的时间。

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

任何build议如何计时,这将考虑循环内容的完整执行时间?

谢谢!

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服务器上。

只需使用Chrome的分析工具 。 他们可以让您全面了解您网页上每个函数调用占用的CPU时间:

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


对于Node,您可以尝试节点检查器的实验分析器。

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

答案很简单: 创build一个jsPerftesting用例 。 它允许运行asynchronous或“延迟”testing。

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

不要简单地比较两个new Date时间戳,因为这只适用于同步testing。 (而且, 这并不是一种在所有浏览器和设备上测量事物的准确方法 。)