2011-06-30 43 views
1

上的均线系统,说JavaScript的速度

Processor: Core 2 Duo 2.2 GHz, Memory: 4 GB 

多少DOM的操作也可以javascript做什么呢? 有没有办法看到一个简单的jQuery动作需要多长时间(以毫秒为单位)?例如,一个喜欢:

$("#example").css("color","red"); 
+6

完全取决于您正在讨论的浏览器 - 不同浏览器和版本中JavaScript性能的巨大差异。 –

回答

3

如果您的浏览器支持此功能,您可以在致电前使用console.profile();,之后使用console.profileEnd();。您控制台应该告诉你输出过了多长时间,电话的数量等

console.profile(); 
$("#example").css("color","red"); 
console.profileEnd(); 

NETTUTS +有一个教程here

1
var start = Date.now(); 

for(var i = 0; i < 10000; i++) { // any number of repetitions 
    $("#example").css("color", "red"); 
} 

var end = Date.now(); 
alert("It took " + Math.round((end - start)/10000).toString() + " milliseconds on average."); 

是如何你火候。我不知道DOM操作。你可以看看sizzle.js的源代码来找出它的功能,尽管我知道它优化了ID选择器,然后依赖于浏览器。也许他们按顺序遍历树,直到找到匹配的ID。这将非常快。

+1

你永远不会只有一个。 –

+0

@Tomalak:好点,固定。 – Ryan

+0

我个人是使用Date.now()的粉丝,因为你不必经历创建一个会得到GC'd的新对象的麻烦。公平地说,就好像加速5%,但这些东西加起来。 另外,你不需要调用.toString() - 自动强制! –

3

作出这些决定的过程被称为“剖析”。您可以在Chrome开发人员工具和Firebug for Firefox中找到内置的分析器。