上的均線系統,說JavaScript的速度
Processor: Core 2 Duo 2.2 GHz, Memory: 4 GB
多少DOM的操作也可以javascript做什麼呢? 有沒有辦法看到一個簡單的jQuery動作需要多長時間(以毫秒爲單位)?例如,一個喜歡:
$("#example").css("color","red");
上的均線系統,說JavaScript的速度
Processor: Core 2 Duo 2.2 GHz, Memory: 4 GB
多少DOM的操作也可以javascript做什麼呢? 有沒有辦法看到一個簡單的jQuery動作需要多長時間(以毫秒爲單位)?例如,一個喜歡:
$("#example").css("color","red");
如果您的瀏覽器支持此功能,您可以在致電前使用console.profile();
,之後使用console.profileEnd();
。您控制檯應該告訴你輸出過了多長時間,電話的數量等
console.profile();
$("#example").css("color","red");
console.profileEnd();
NETTUTS +有一個教程here。
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。這將非常快。
你永遠不會只有一個。 –
@Tomalak:好點,固定。 – Ryan
我個人是使用Date.now()的粉絲,因爲你不必經歷創建一個會得到GC'd的新對象的麻煩。公平地說,就好像加速5%,但這些東西加起來。 另外,你不需要調用.toString() - 自動強制! –
作出這些決定的過程被稱爲「剖析」。您可以在Chrome開發人員工具和Firebug for Firefox中找到內置的分析器。
完全取決於您正在討論的瀏覽器 - 不同瀏覽器和版本中JavaScript性能的巨大差異。 –