Показать сообщение отдельно
  #32 (permalink)  
Старый 31.03.2015, 14:23
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

В примере используется рефлексия для разворачивания цикла
Оптимизация достигается заменой динамически вычисляемых значений на статические ( заранее рассчитанные ) значения.

Доведем ситуацию до абсурда =)
var arr = ["a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a"];

var sliceArr001 = function (){
	var returnStr = "";
		for (i = 0; i < 20 ; i++{
			returnStr += arr[i];
		}
	return returnStr;	
}

var sliceArr002 = function (){
	return "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
этот пример похож на пример приведенный в примере xD
Надеюсь не стоит объяснять почему второй вариант функции будет работать быстрее?
С помощью рефлексии можно создавать второй вариант функции каждый раз когда изменяется массив.
Суть в том что используя немного динамики мы создаем более статичный(более быстрый вариант) функции.
И нужно четко понимать динамика замедляет программу статика ускоряет. но динамика позволяет делать программу более статичной и быстрой ))))).
Кстати использование конструктора функции вместо eval позволило бы еще более ускорить рантайм.

Последний раз редактировалось MallSerg, 31.03.2015 в 14:55.
Ответить с цитированием