2011-06-30 1 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, а затем это зависит от браузера. Возможно, они ходят по дереву, пока не найдут соответствующий идентификатор. Это было бы довольно быстро.

+1

Вы никогда бы не стали только одним. –

+0

@ Томалак: Хорошая точка, исправлена. – Ryan

+0

Я лично поклонник использования Date.now(), так как вам не нужно беспокоиться о создании нового объекта, который получит GC'd. Справедливости ради, это похоже на 5% -ное ускорение в лучшем случае, но все это складывается. Кроме того, вам не нужно вызывать .toString() - автоматическое принуждение! –

3

Процесс принятия этих определений называется «профилированием». Вы можете найти профилировщики, встроенные в инструменты разработчика Chrome, и Firebug для Firefox.