dan*_*ine 309 javascript performance
CPU周期,内存使用,执行时间等?
补充:除了只知道代码运行速度之外,是否有一种在JavaScript中测试性能的定量方法?
noa*_*oah 308
分析器绝对是获取数字的好方法,但根据我的经验,感知性能对用户/客户来说都很重要.例如,我们有一个带有Ext手风琴的项目,该手风琴扩展为显示一些数据,然后是几个嵌套的Ext网格.一切实际上都是渲染速度非常快,没有一次操作花费很长时间,只有很多信息一次全部渲染,所以对用户来说感觉很慢.
我们"修复"了这个,不是通过切换到更快的组件,或者优化某些方法,而是先渲染数据,然后使用setTimeout渲染网格.因此,首先出现信息,然后网格会在一秒钟后出现.总的来说,这样做需要稍微多一点的处理时间,但对于用户来说,感知性能得到了提升.
这些天来,Chrome的探查和其他工具的普及和易于使用的,因为是console.time(),console.profile()和performance.now().Chrome还为您提供了一个时间线视图,可以显示杀死您的帧速率,用户可能在哪里等待的内容等.
查找所有这些工具的文档非常简单,您不需要SO答案.7年后,我仍然会重复我原来答案的建议,并指出你可以让代码慢速运行,用户不会注意到它,并且代码运行速度非常快,他们会抱怨相当快的代码不够快.或者您对服务器API的请求花了220毫秒.或者类似的东西.关键在于,如果你拿出一个分析器并去寻找工作,你会发现它,但它可能不是你的用户需要的工作.
Jos*_*wne 186
我同意感知到的表现真的很重要.但有时我只是想知道做某事的方法更快.有时差异很大,值得了解.
你可以使用javascript计时器.但我通常得到使用原生的浏览器(目前还在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')
Run Code Online (Sandbox Code Playgroud)

Chrome canary最近在开发工具源选项卡中添加了行级别概要文件,让您可以准确了解每行执行的时间长度!

pra*_*c84 91
我们总是可以通过简单的日期对象来测量任何函数所用的时间.
var start = +new Date(); // log start timestamp
function1();
var end = +new Date(); // log end timestamp
var diff = end - start;
Run Code Online (Sandbox Code Playgroud)
Dan*_*mms 36
大多数浏览器现在正在实现高分辨率计时performance.now().它优于new Date()性能测试,因为它独立于系统时钟运行.
用法
var start = performance.now();
// code being timed...
var duration = performance.now() - start;
Run Code Online (Sandbox Code Playgroud)
参考
Ram*_*din 30
JSLitmus是一个用于创建临时JavaScript基准测试的轻量级工具
让检查之间的性能function expression和function constructor:
<script src="JSLitmus.js"></script>
<script>
JSLitmus.test("new Function ... ", function() {
return new Function("for(var i=0; i<100; i++) {}");
});
JSLitmus.test("function() ...", function() {
return (function() { for(var i=0; i<100; i++) {} });
});
</script>
Run Code Online (Sandbox Code Playgroud)
我上面做的是创建function expression并function constructor执行相同的操作.结果如下:
FireFox表现结果

IE性能结果

Oli*_*Oli 16
有些人建议使用特定的插件和/或浏览器.我不会,因为它们只对那个平台非常有用; Firefox上的测试运行不会准确转换为IE7.考虑到99.999999%的网站有多个浏览器访问它们,您需要检查所有流行平台的性能.
我的建议是将其保留在JS中.创建一个基准测试页面,其中包含所有JS测试并执行时间.您甚至可以将AJAX结果发回给您,以使其完全自动化.
然后冲洗并在不同的平台上重复.
小智 8
这是一个简单的函数,显示传入函数的执行时间:
var perf = function(testName, fn) {
var startTime = new Date().getTime();
fn();
var endTime = new Date().getTime();
console.log(testName + ": " + (endTime - startTime) + "ms");
}
Run Code Online (Sandbox Code Playgroud)
*_*лов 5
performance.mark('initSelect - start');
initSelect();
performance.mark('initSelect - end');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185456 次 |
| 最近记录: |