CPU周期,内存使用情况,执行时间等等?
除了感知代码的运行速度之外,是否有一种量化的方法来测试JavaScript的性能?
CPU周期,内存使用情况,执行时间等等?
除了感知代码的运行速度之外,是否有一种量化的方法来测试JavaScript的性能?
当前回答
我也在找类似的东西,但发现了这个。
https://jsbench.me/
它允许两边比较,然后你也可以分享结果。
其他回答
有些人建议使用特定的插件和/或浏览器。我不会,因为它们只对一个平台有用;在Firefox上的测试运行不能准确地转换到IE7上。考虑到99.999999%的网站有多个浏览器访问,您需要检查所有流行平台上的性能。
我的建议是将其保留在JS中。创建一个包含所有JS测试的基准测试页面,并计时执行。您甚至可以使用ajax将结果发送给您,以保持它完全自动化。
然后在不同的平台上重复。
大多数浏览器现在都在performance.now()中实现了高分辨率的计时。在性能测试方面,它优于new Date(),因为它独立于系统时钟运行。
使用
var start = performance.now();
// code being timed...
var duration = performance.now() - start;
参考文献
https://developer.mozilla.org/en-US/docs/Web/API/Performance.now () http://www.w3.org/TR/hr-time/#dom-performance-now
这是为特定操作收集性能信息的好方法。
start = new Date().getTime();
for (var n = 0; n < maxCount; n++) {
/* perform the operation to be measured *//
}
elapsed = new Date().getTime() - start;
assert(true,"Measured time: " + elapsed);
我认为JavaScript性能(时间)测试已经足够了。我在这里找到了一篇关于JavaScript性能测试的非常方便的文章。
我同意,感知到的表现真的是最重要的。但有时我只是想知道哪种方法做某事更快。有时这种差异是巨大的,值得了解。
你可以使用javascript计时器。但我通常会得到更一致的结果使用本机Chrome(现在也在Firefox和Safari) devTool方法console.time() & console.timeEnd()
我如何使用它的例子:
var iterations = 1000000;
console.time('Function #1');
for(var i = 0; i < iterations; i++ ){
functionOne();
};
console.timeEnd('Function #1')
console.time('Function #2');
for(var i = 0; i < iterations; i++ ){
functionTwo();
};
console.timeEnd('Function #2')
更新(4/4/2016):
Chrome金丝雀最近增加了行级别剖析开发工具的来源选项卡,让你看到每一行执行了多长时间!