Какой вариант экономнее?

Страницы: 1
RSS
Какой вариант экономнее?
 
Господа, прошу подсказать какой вариант экономнее
1 вариант
Код
func = RSI()
            local rsi_count={}            
            for i=1,ds[бумага]:Size() do         
               rsi_count[i]=func(i, {Period=rsi_period, VType="Typical"}, ds[бумага])
            end         
               rsi0=rsi_count[ds[бумага]:Size()]
               rsi1=rsi_count[ds[бумага]:Size()-1]
               rsi2=rsi_count[ds[бумага]:Size()-2]      
или тоже самое, но с переменной num_candles
Код
func = RSI()
            local rsi_count={}            
            num_candles=ds[бумага]:Size()
            for i=1,num_candles do               
               rsi_count[i]=func(i, {Period=rsi_period, VType="Typical"}, ds[бумага])
            end      
               rsi0=rsi_count[num_candles]
               rsi1=rsi_count[num_candles-1]
               rsi2=rsi_count[num_candles-2]
по сути, вопрос такой: тяжело ли компьютеру несколько раз получать значение ds[бумага]:Size()? введение переменной ускорит ли процесс?
 
Компьютеру особо тяжело не будет. Заметной разницы в производительности современного компьютера Вы не заметите.
Но просто с точки зрения элементарной оптимизации кода для любого языка программирования (только если не пишете программу для Commodore 64 :) второй вариант лучше.
Причем лучше, даже если бы для получения num_candles не нужно было бы вызывать какую-либо функцию, а, допустим, требовалось бы всего лишь обращение к какому-то элементу таблицы (num_candles =memsize[Бумага]).

Кроме того, следует помнить, что результат вызова :Size() может в любой момент поменяться (придет новая свечка), что вообще "сломает" первый алгоритм.

P.S. и не забудьте num_candles объявить локальной переменной.
 
Если же действительно хотите освоить Lua, наберите в любом поисковике "Lua Performance Tips"
Страницы: 1
Читают тему
Наверх