2011-06-30 44 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中找到內置的分析器。