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

 
papaklass:
Только почему нельзя было ответить так сразу?

Так я сразу же ответил точно еще день назад:


 
papaklass:

Зрячие, покажите мне слепому ссылки на эти функции в отчете профилировщика.

Они скорее всего инлайнятся.
 
Эта история произошла давным-давно в старинном городе, в котором жил Учитель, обыкновенный Учитель, окруженный любимыми учениками. Самый любимый из них однажды задумался: «Есть ли вопрос, на который бы Учитель не смог дать ответа?»

Он пошел на цветущий луг, поймал самую красивую бабочку и посадил ее между ладоней. Бабочка цеплялась лапками за его руки, и Ученику было щекотно. Улыбка застыла на его губах, rогда он подошел к Учителю и спросил: «Скажи, Учитель, какая бабочка у меня в руках — живая или мертвая?» Он крепко держал бабочку в сомкнутых ладонях и был готов в любое мгновение сжать их ради своей истины.
Учитель не смотрел на руки любимого Ученика — он улыбнулся ему одними глазами и ответил: «Все в твоих руках...»

 
papaklass:

Пожелание:

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

Если речь об общем потреблении памяти терминалом, то это дорогая операция для каждой строки.
Контроль за расходом памяти лучше сделать вручную, используя в "нужных" местах соответствующую функцию.

Если речь о валидаторе памяти (инструмент позволяющий отследить все операции по выделению и освобождению памяти), то он обсуждается у нас.
Не факт, что он появится на свет, т.к. уже сейчас пользователю сообщается об утечках с указанием количества объектов по каждому типу.
 
Очень медленная функция EventSetTimer(). Приходится вызывать каждый тик, поэтому актуально. Занимает более 99% времени в довольно тяжелом индикаторе. Возможно ли, что это просто ошибка профилировщика? Пробовал убирать обработчик OnTimer() - безрезультатно.
 
flops:
Очень медленная функция EventSetTimer(). Приходится вызывать каждый тик, поэтому актуально. Занимает более 99% времени в довольно тяжелом индикаторе. Возможно ли, что это просто ошибка профилировщика? Пробовал убирать обработчик OnTimer() - безрезультатно.

 
flops:
Очень медленная функция EventSetTimer(). Приходится вызывать каждый тик, поэтому актуально. Занимает более 99% времени в довольно тяжелом индикаторе. Возможно ли, что это просто ошибка профилировщика? Пробовал убирать обработчик OnTimer() - безрезультатно.

Для какой надобности вы создаёте новый таймер на каждом тике?

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

Так что в обычном советнике EventSetTimer() и EventKillTimer() вызываются единожды, а значит могут иметь очень долгий вызов, на производительности языка это ни как не сказывается.

 
Urain:

Для какой надобности вы создаёте новый таймер на каждом тике?

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

Так что в обычном советнике EventSetTimer() и EventKillTimer() вызываются единожды, а значит могут иметь очень долгий вызов, на производительности языка это ни как не сказывается.

Мне нужно выполнять некоторое действие не реже, чем раз в 1 секунду, не пропуская тики. Поэтому в начале OnCalculate() таймер убивается, а конце - устанавливается заново.

Профилировщик запускался всего на несколько секунд или минуту, что дало картинку выше. Результаты странные, поэтому подозреваю, что это просто ошибка профилировщика.

 
flops:

Мне нужно выполнять некоторое действие не реже, чем раз в 1 секунду, не пропуская тики. Поэтому в начале OnTick() таймер убивается, а конце - устанавливается заново.

похоже это такое хобби - ходить на костылях.
 
sergeev:
похоже это такое хобби - ходить на костылях.
Критикуя, - предлагайте.
Причина обращения: