На подходе профилировщик кода MQL5 - страница 7

 
TheXpert:
Она не может быть быстрой.

Посмотрим. Интересно мнение разработчиков.

Пока нашел баг - время (по справке) показывается в миллисекундах, что не совпадает с опытом. Например, запуск индикатора на 5 секунд показал общее время OnCalculate 272 214 мс (4 минуты) [сервисдеск #434078]. p.s. ошибка в справке, время показывается в мкс.

 
flops:

Посмотрим. Интересно мнение разработчиков.

Пока нашел баг - время (по справке) показывается в миллисекундах, что не совпадает с опытом. Например, запуск индикатора на 5 секунд показал общее время OnCalculate 272 214 мс (4 минуты) [сервисдеск #434078].

действительно похоже на глюк, типа конфликта двух таймеров (один из них профилировщика)
 

Уважаемые,

кто может подсказать, почему самой ресурсоемкой операцией в эксперте является работа с обычной средней :)??? См. скрин.

Делаю все по науке. 

Инициализирую:

int iMAHandle;
double iMAArray[];

Потом в OnInit получаю хэндлы и т.д.

ArraySetAsSeries(iMAArray,true);
iMAHandle=iMA(Symbol(),PERIOD_M1,7,0,MODE_SMMA,PRICE_HIGH);

Потом в OnTick копирую буфер в массив:

CopyBuffer(iMAHandle,0,0,3,iMAArray);

А тормозит ужасно. При этом по такой же схеме я там обрабатываю и другие индикаторы, но тормозит ТОЛЬКО iMA.

Первый раз с таким сталкиваюсь. Помогите чем можете, пожалуйста.

Файлы:
profile.jpg  304 kb
 
Wahoo:

Уважаемые,

кто может подсказать, почему самой ресурсоемкой операцией в эксперте является работа с обычной средней :)??? См. скрин.

Делаю все по науке. 

Инициализирую:

Потом в OnInit получаю хэндлы и т.д.

Потом в OnTick копирую буфер в массив:

А тормозит ужасно. При этом по такой же схеме я там обрабатываю и другие индикаторы, но тормозит ТОЛЬКО iMA.

Первый раз с таким сталкиваюсь. Помогите чем можете, пожалуйста.

Попробуйте ArrayResize добавить, чтобы постоянно размер массива не дёргать при копировании.
 
Silent:
Попробуйте ArrayResize добавить, чтобы постоянно размер массива не дёргать при копировании.
Спасибо за совет. Ни Array resize ни задание размера массива статически не помогают. Все равно работа с буферами получается самой ресурсоемкой операцией. Но, может это так и должно быть.
Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - Документация по MQL5
 
Wahoo:
Спасибо за совет. Ни Array resize ни задание размера массива статически не помогают. Все равно работа с буферами получается самой ресурсоемкой операцией. Но, может это так и должно быть.

Вообще да, CopyBuffer прилично времени занимает.

Вообще, лучше его в  OnInit, а в OnTick просто дописывать.

 
Silent:

Вообще да, CopyBuffer прилично времени занимает.

Вообще, лучше его в  OnInit, а в OnTick просто дописывать.

Но, я там копирую из буфера всего 3 элемента. Не думаю что дописывание в таком случае будет сильно более экономным...
 
Silent:

Вообще да, CopyBuffer прилично времени занимает.

Вообще, лучше его в  OnInit, а в OnTick просто дописывать.

Тут вопрос в том, что именно на МА тормозит, а на других нет.
 

На следующей неделе с новым билдом выйдет более детальная версия профайлера, который умеет показывать затраты даже заинлайненных функций.

Тем самым стало лучше видно полную картинку затрат.

Ну и ошибки в счетчиках поправили.

 
Renat:
Одна из важных задач профайлера - дать возможность нам провести более точную внутреннюю оптимизацию процессов внутри системы MQL5. Мы постараемся избавиться от узких мест.

Еще больше результатов мы получим после включения профайлера в одиночных проходах тестера торговых стратегий.
Не хотелось бы прослыть слоупоком. Рискну спросить, а сие уже реализовано или профилировщик в настоящее время (билд 756) только в реал-тайме работать умеет?