Эта история произошла давным-давно в старинном городе, в котором жил
Учитель, обыкновенный Учитель, окруженный любимыми учениками. Самый
любимый из них однажды задумался: «Есть ли вопрос, на который бы Учитель
не смог дать ответа?»
Он пошел на цветущий луг, поймал самую красивую бабочку и посадил ее
между ладоней. Бабочка цеплялась лапками за его руки, и Ученику было
щекотно. Улыбка застыла на его губах, rогда он подошел к Учителю и
спросил: «Скажи, Учитель, какая бабочка у меня в руках — живая или
мертвая?» Он крепко держал бабочку в сомкнутых ладонях и был готов в
любое мгновение сжать их ради своей истины.
Учитель не смотрел на руки любимого Ученика — он улыбнулся ему одними глазами и ответил: «Все в твоих руках...»
На мой взгляд в профилировщике не хватает строчки с потреблением памяти, хотя бы в общем виде. Если есть такая возможность, добавьте пожалуйста.
Если речь об общем потреблении памяти терминалом, то это дорогая операция для каждой строки. Контроль за расходом памяти лучше сделать вручную, используя в "нужных" местах соответствующую функцию.
Если речь о валидаторе памяти (инструмент позволяющий отследить все операции по выделению и освобождению памяти), то он обсуждается у нас. Не факт, что он появится на свет, т.к. уже сейчас пользователю сообщается об утечках с указанием количества объектов по каждому типу.
Очень медленная функция EventSetTimer(). Приходится вызывать каждый тик, поэтому актуально. Занимает более 99% времени в довольно тяжелом индикаторе. Возможно ли, что это просто ошибка профилировщика? Пробовал убирать обработчик OnTimer() - безрезультатно.
flops: Очень медленная функция EventSetTimer(). Приходится вызывать каждый тик, поэтому актуально. Занимает более 99% времени в довольно тяжелом индикаторе. Возможно ли, что это просто ошибка профилировщика? Пробовал убирать обработчик OnTimer() - безрезультатно.
flops: Очень медленная функция EventSetTimer(). Приходится вызывать каждый тик, поэтому актуально. Занимает более 99% времени в довольно тяжелом индикаторе. Возможно ли, что это просто ошибка профилировщика? Пробовал убирать обработчик OnTimer() - безрезультатно.
Для какой надобности вы создаёте новый таймер на каждом тике?
Может я чего не понимаю, но философия этой функции, создать таймер в ините и дальше пользовать его до самого деинита, где он собственно и киляется.
Так что в обычном советнике EventSetTimer() и EventKillTimer() вызываются единожды, а значит могут иметь очень долгий вызов, на производительности языка это ни как не сказывается.
Для какой надобности вы создаёте новый таймер на каждом тике?
Может я чего не понимаю, но философия этой функции, создать таймер в ините и дальше пользовать его до самого деинита, где он собственно и киляется.
Так что в обычном советнике EventSetTimer() и EventKillTimer() вызываются единожды, а значит могут иметь очень долгий вызов, на производительности языка это ни как не сказывается.
Мне нужно выполнять некоторое действие не реже, чем раз в 1 секунду, не пропуская тики. Поэтому в начале OnCalculate() таймер убивается, а конце - устанавливается заново.
Профилировщик запускался всего на несколько секунд или минуту, что дало картинку выше. Результаты странные, поэтому подозреваю, что это просто ошибка профилировщика.
Мне нужно выполнять некоторое действие не реже, чем раз в 1 секунду, не пропуская тики. Поэтому в начале OnTick() таймер убивается, а конце - устанавливается заново.
Только почему нельзя было ответить так сразу?
Так я сразу же ответил точно еще день назад:
Зрячие, покажите мне слепому ссылки на эти функции в отчете профилировщика.
Он пошел на цветущий луг, поймал самую красивую бабочку и посадил ее между ладоней. Бабочка цеплялась лапками за его руки, и Ученику было щекотно. Улыбка застыла на его губах, rогда он подошел к Учителю и спросил: «Скажи, Учитель, какая бабочка у меня в руках — живая или мертвая?» Он крепко держал бабочку в сомкнутых ладонях и был готов в любое мгновение сжать их ради своей истины.
Учитель не смотрел на руки любимого Ученика — он улыбнулся ему одними глазами и ответил: «Все в твоих руках...»
Пожелание:
На мой взгляд в профилировщике не хватает строчки с потреблением памяти, хотя бы в общем виде. Если есть такая возможность, добавьте пожалуйста.
Контроль за расходом памяти лучше сделать вручную, используя в "нужных" местах соответствующую функцию.
Если речь о валидаторе памяти (инструмент позволяющий отследить все операции по выделению и освобождению памяти), то он обсуждается у нас.
Не факт, что он появится на свет, т.к. уже сейчас пользователю сообщается об утечках с указанием количества объектов по каждому типу.
Очень медленная функция EventSetTimer(). Приходится вызывать каждый тик, поэтому актуально. Занимает более 99% времени в довольно тяжелом индикаторе. Возможно ли, что это просто ошибка профилировщика? Пробовал убирать обработчик OnTimer() - безрезультатно.
Очень медленная функция EventSetTimer(). Приходится вызывать каждый тик, поэтому актуально. Занимает более 99% времени в довольно тяжелом индикаторе. Возможно ли, что это просто ошибка профилировщика? Пробовал убирать обработчик OnTimer() - безрезультатно.
Для какой надобности вы создаёте новый таймер на каждом тике?
Может я чего не понимаю, но философия этой функции, создать таймер в ините и дальше пользовать его до самого деинита, где он собственно и киляется.
Так что в обычном советнике EventSetTimer() и EventKillTimer() вызываются единожды, а значит могут иметь очень долгий вызов, на производительности языка это ни как не сказывается.
Для какой надобности вы создаёте новый таймер на каждом тике?
Может я чего не понимаю, но философия этой функции, создать таймер в ините и дальше пользовать его до самого деинита, где он собственно и киляется.
Так что в обычном советнике EventSetTimer() и EventKillTimer() вызываются единожды, а значит могут иметь очень долгий вызов, на производительности языка это ни как не сказывается.
Мне нужно выполнять некоторое действие не реже, чем раз в 1 секунду, не пропуская тики. Поэтому в начале OnCalculate() таймер убивается, а конце - устанавливается заново.
Профилировщик запускался всего на несколько секунд или минуту, что дало картинку выше. Результаты странные, поэтому подозреваю, что это просто ошибка профилировщика.
Мне нужно выполнять некоторое действие не реже, чем раз в 1 секунду, не пропуская тики. Поэтому в начале OnTick() таймер убивается, а конце - устанавливается заново.
похоже это такое хобби - ходить на костылях.