Скорость обработки

Страницы: 1
RSS
Скорость обработки
 
Подскажите пожалуйста, различаются ли по скорости обработки два таких варианта:
Код
    local num_candles=ds[sec]:Size() 
    if index==num_candles then
        func = BB()     
        line_10[sec],_,line_3[sec]=func(num_candles,...............)      
     end
или
Код
   if index==ds[sec]:Size()  then
        func = BB()     
        line_10[sec],_,line_3[sec]=func(ds[sec]:Size() ,...............)      
     end
Иными словами, считается ли ds[sec]:Size() трудоёмким элементом?
Да и другие функции внутри ДатаСорс - являются ли напряжёнными для вычисления?
 
Поскольку исходные тексты терминала недоступны, говорить можно лишь о результатах тестов на каком-то определенном стенде и в каких-то определённых условиях.

По моим ощущениям, получение размера функцией Size() не несет какой-то большой нагрузки. Получение значений свечей - несколько более затратная вещь.

В любом случае все эти функции лазят через мостик между qlua и терминалом, что есть непростая задачка. Мостик узенький, очереди на проезд длинные.

Поэтому однократное получение этих данных не ведет к проблемам, а многократного получения одних и тех же данных лучше избежать за счет их кеширования на стороне скрипта.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Спасибо за ответ!
Вопрос по этому примеру:
Код
local num_candles=ds[sec]:Size()      
if index==num_candles then         
func = BB()              
line_10[sec],_,line_3[sec]=func(num_candles,...............)            
end
Я работаю с множеством акций, по каждой создаётся свой поток ds[sec].
Грамотно ли будет local num_candles превратить в local num_candles[sec]. Ведь возникают риски, что две сделки про разным акциям произойдут одновременно, и с этой переменной произойдёт каша, на неё будут претендовать две акции. или я заблуждаюсь?
 
Цитата
Космонавт написал:
Грамотно ли будет local num_candles превратить в local num_candles[sec]. Ведь возникают риски, что две сделки про разным акциям произойдут одновременно, и с этой переменной произойдёт каша, на неё будут претендовать две акции. или я заблуждаюсь?

У Вас переменная num_candles и так заполняется в зависимости от бумаги.
То есть никакой каши не произойдет.
 
Цитата
Sergey Gorokhov написал:
Цитата
Космонавт   написал:
Грамотно ли будет local num_candles превратить в local num_candles[sec]. Ведь возникают риски, что две сделки про разным акциям произойдут одновременно, и с этой переменной произойдёт каша, на неё будут претендовать две акции. или я заблуждаюсь?
У Вас переменная num_candles и так заполняется в зависимости от бумаги.
То есть никакой каши не произойдет.

Разве Дата Сорс с колбеком не многопоточны?
Если многопоточны, то запросто может быть ситуация с одновременными сделками по разным бумагам. Тогда эта переменная понадобится двум акциям одновременно.
 
Цитата
Космонавт написал:
Разве Дата Сорс с колбеком не многопоточны?
Нет
 
Графики (а мы говорим о графиках) строятся по таблице обезличенных сделок, которая транслируется одним сплошным потоком.
 
Хм. Тогда ещё вопрос.
Вот мой колбек.
Код
function mycallbackforallstocks(class,sec,index)         

расчёт логики, трудоёмкий процесс анализа
   
end

function DataSource(class,sec,interval)
   ds[sec] = CreateDataSource(class,sec,interval)
   ds[sec]:SetUpdateCallback(function(...) mycallbackforallstocks(class,sec,...) end)
   return ds[sec]
end
пока считается логика, успевает прийти ещё одна сделка по другому инструменту. Или по этому же инструменту.
Обработается ли она? Или будет пропущена и забыта?
 
Космонавт,
Вы можете сами проверить.
Обработается, но позже чем надо.
 
Цитата
Космонавт написал:
Хм. Тогда ещё вопрос.
Вот мой колбек.
Код
   function   mycallbackforallstocks (class,sec,index)         

расчёт логики, трудоёмкий процесс анализа
   
 end 

 function   DataSource (class,sec,interval)
   ds[sec]  =   CreateDataSource (class,sec,interval)
   ds[sec]: SetUpdateCallback ( function ( .. .) mycallbackforallstocks(class,sec, .. .)  end )
    return  ds[sec]
 end   
пока считается логика, успевает прийти ещё одна сделка по другому инструменту. Или по этому же инструменту.
Обработается ли она? Или будет пропущена и забыта?
Все Колбеки работают в одном потоке.
Страницы: 1
Читают тему
Наверх