В примере используется
рефлексия для
разворачивания цикла
Оптимизация достигается заменой динамически вычисляемых значений на статические ( заранее рассчитанные ) значения.
Доведем ситуацию до абсурда =)
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 позволило бы еще более ускорить рантайм.