基准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。 (而且, 这并不是一种在所有浏览器和设备上测量事物的准确方法 。)