X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> бенчмаркинг скорость присвоение событий ДОМ элементам (в цикле)
cyber_ua
cyber_ua
Topic Starter сообщение 30.6.2012, 3:30; Ответить: cyber_ua
Сообщение #1


решил проверить как лучше всего присваивать событие в цикле , кто то может сказать разницы нет (разница есть где то в 9-10 раз)


кнопки вызова (за комментированы результаты)

<input type="button" value="slow" onClick="s_t(1000,slow);"><br><!--Result = 9297-->
<input type="button" value="medium" onClick="s_t(1000,medium);"><br><!--Result = 9980-->
<input type="button" value="fast" onClick="s_t(1000,fast);"><br><!--Result = 2013-->
<input type="button" value="add_Event" onClick="s_t(1000,add_Event);"><br><!--Result = 1033-->
<input type="button" value="slow_q" onClick="s_t(1000,slow_q);"><br><!-- Result = 9987-->
<input type="button" value="medium_q" onClick="s_t(1000,medium_q);"><br><!-- Result = 10893-->
<input type="button" value="fast_q" onClick="s_t(1000,fast_q);"><br><!--Result = 1837-->
<input type="button" value="add_Event_q" onClick="s_t(1000,add_Event_q);"><br><!--Local Result = 997-->


для все функций с буквой q использовал выборку не "живых" элементов через

[JS]
document.querySelectorAll(".drag_")
[/JS]
а для тех что без нее выборку живых элементов по классу
[JS]
document.getElementsByClassName
[/JS]
сами функции
[JS]
function slow(){
var i = objS.length;

while(i--){
objS[i].onclick = function (){
this.innerHTML = "text";

}

}

}

function medium (){
var i = objS.length;
var n_elem;
while(i--){

n_elem = objS[i];

n_elem.onclick = function (){

this.innerHTML = "text";

}

}
}

function click_fnc(){

this.innerHTML = "text";

}

function fast(){
var i = objS.length;
var n_elem;
while(i--){


n_elem = objS[i];

n_elem.onclick = click_fnc;

}
}

function add_Event(){
var i = objS.length;
var n_elem;

while(i--){


n_elem = objS[i];

n_elem.addEventListener("click",click_fnc,false);
}

}

[/JS]
для query не вылаживаю они там таки же только массив элементов по другом получается

функция для тестирования
[JS]
function s_t(time , f){
var d = new Date();

for(var i =0; i < time;i++)f();

alert(new Date() - d);
}

[/JS]

если кому интересно погонять можно тут http://cyberua.16mb.com/sp_test/
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 2.11.2012, 9:53; Ответить: Arks
Сообщение #2


medium и slow мне кажется сравнивать некорректно. Написан фактически один и тот же код, разница в прыжках в памяти из итератора до нужного объекта, поэтому у вас и присутствует минимальная разница. Более того, будет один прыжок - slow выиграет у medium. А если в slow объект будет где-нибудь в 30 прыжках то думаю понятно что будет с разницей.. У fast понятное дело быстрее и более того, при большом количестве итераций будет разница неучитывающая сам процесс onclick. Так что сравнивать тут можно разьве что onclick, addEventListener и attachEvent в разных браузерах а не некие куски кода.
console.time и console.timeEnd кстати сейчас есть везде кроме IE.
И по тесту нельзя однозначно делать выводы о querySelectorAll, их надо делать отдельно именно с выбором и на разных DOM с большим количеством элементов.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыПереехать жить в загородный дом
172 metvekot 18108 20.3.2024, 9:37
автор: Skyworker
Горячая тема (нет новых ответов) Человеку нужна своя квартира/дом?
187 metvekot 14244 21.2.2024, 22:39
автор: spomoni
Открытая тема (нет новых ответов) In-to.cc - Простота использования, быстрая скорость обмена, индивидуальный подход к каждому пользователю, самые популярные направления обмена.
2 in_to 2311 13.3.2023, 14:15
автор: in_to
Открытая тема (нет новых ответов) Secretsline VPN - скорость до 100 мбит/c. Без логов. Для всех платформ.
2 Secrets_Line 2564 30.3.2022, 12:49
автор: EvilGomel
Открытая тема (нет новых ответов) Контент под новостной сайт тематики Дом-2
3 Mowshon 1216 30.10.2020, 15:43
автор: Mowshon


 



RSS Текстовая версия Сейчас: 26.4.2024, 2:38
Дизайн