Показать сообщение отдельно
  #6 (permalink)  
Старый 01.04.2011, 20:15
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

по теме кода там мало. много кода из-за того, что там html везде понапихан и циклы для замера времени исполнения

весь вопрос заключается в этом : "почему без var b = window.b функция работает быстрее?"

по идее должна медленнее


els = window.document.body.children;
b = els.length;

function ge(tagname){
	
			
	tagname = tagname.toUpperCase();
		
	var i = 0, el, *!* b = window.b */!*
			
	while(i++ < b){
			if( (el = els[i]).tagName === tagname )
			break;
         } 
	
	return el;
}


и еще один парадокс

затестил сейчас же


while(i < b){
			if( (el = els[i++]).tagName === tagname ) break;
			if( (el = els[i++]).tagName === tagname ) break;
         }


если цикл такой (сверху), время исполнения в FF 460, Chrome - 150. итераций в 2 раза больше!

если добавить еще if( foo ) break;, скорость исполнения уменьшается на ~5-7 ms

.. а если такой

while(i++ < b){
			if( (el = els[i]).tagName === tagname )
			break;
         }


если цикл такой (сверху), время исполнения в FF 390, Chrome - 120. ведь итераций больше?

??????

Последний раз редактировалось melky, 02.04.2011 в 13:51.
Ответить с цитированием