Показать сообщение отдельно
  #27 (permalink)  
Старый 13.07.2010, 23:18
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Вернусь к первому вопросу.

Столкнулся с одной интересной вещью. Есть код:
var fragment = document.createDocumentFragment();
for(var i = 0; i < 10000; i++){
  fragment.appendChild(document.createElement('div'));
}
document.body.appendChild(fragment);


Далее тестируем производительность в мозилле:
var arr = Array.prototype.slice.call(document.getElementsByTagName('div'));

var elems = document.getElementsByTagName('div');

console.time('While');
var l = elems.length;
var arrWhile = [];
while(l){
  arrWhile.push(elems[--l]);
}
console.timeEnd('While');


У меня показывает 9 ms. Если убрать первую строку или поменять 'div' на '*' (либо другой какой тег) в этой строке, начинает показывать 17 ms.
Это что? Кеширование?

Последний раз редактировалось B~Vladi, 14.07.2010 в 08:13.
Ответить с цитированием