Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике - страница 24

 
Renat Fatkhullin:
Работу отладчика в 2772 поправили.

Профилировщик наконец-то нормально стал считать, в 2770 какие-то ужасы выдавал

в Профилировщике как раньше уже не будет столбца с кол-вом вызовов?

 
Fast235:

Профилировщик наконец-то нормально стал считать, в 2770 какие-то ужасы выдавал

в Профилировщике как раньше уже не будет столбца с кол-вом вызовов?

Не будет, это же вероятностный семплинг.

Так как мы переходим на новый отладчик, еще некоторое время возможны ошибки. Но все поправим и обогатим функционал.
 
Renat Fatkhullin:

Не будет, это же вероятностный семплинг.

но там можно видеть непонятные вызовы, логические ошибки

 
Fast235:

но там можно видеть непонятные вызовы, логические ошибки

Согласен.

 
Fast235:

но там можно видеть непонятные вызовы, логические ошибки

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

Это же профайлинг релизной оптимизированной версии, а не отладочной с отключенным оптимизатором.

Профайлинг, основанный на семплинге, показывает горячие места оптимизированного кода. Именно оптимизированного. И это лучше, чем обманываться на наивном профайлинге дебаг кода, который отличается от релизного в 5-10 раз.

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

Поэтому все правильно работает - концентрируйтесь на расшивании узких мест, а не считайте профайлинг контролем покрытия/coverage кода.

 
Fast235:

Профилировщик наконец-то нормально стал считать, в 2770 какие-то ужасы выдавал


перетестировал, вроде не было изменений, период маленький был 1-2 дня на М1, показывал ерунду,

недельный тест логически правильно показывает результат, но сильно не хватает столбца "кол-во вызовов"

add

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


 
Renat Fatkhullin:

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

Это же профайлинг релизной оптимизированной версии, а не отладочной с отключенным оптимизатором.

Профайлинг, основанный на семплинге, показывает горячие места оптимизированного кода. Именно оптимизированного. И это лучше, чем обманываться на наивном профайлинге дебаг кода, который отличается от релизного в 5-10 раз.

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

Поэтому все правильно работает - концентрируйтесь на расшивании узких мест, а не считайте профайлинг контролем покрытия/coverage кода.

Речь о том, что когда видишь 100 000 вызовов функции, которая должна была вызваться всего 10 раз, то начинаешь искать ошибку в своем коде.

Сейчас нельзя сделать профайл не релизной версии с таким показателем.

 
Renat Fatkhullin:

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

Это же профайлинг релизной оптимизированной версии, а не отладочной с отключенным оптимизатором.

Профайлинг, основанный на семплинге, показывает горячие места оптимизированного кода. Именно оптимизированного. И это лучше, чем обманываться на наивном профайлинге дебаг кода, который отличается от релизного в 5-10 раз.

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

Поэтому все правильно работает - концентрируйтесь на расшивании узких мест, а не считайте профайлинг контролем покрытия/coverage кода.

Я профилировал эксперта на истории M1 OHLC за 21 год (15К трейдов). Вот что получил:

Эта функция вызывается один раз при инициализации эксперта, затрачивает микросекунды или миллисекунды из всего теста в почти 3 минуты.

Посоветуйте, как мне получить какие-нибудь полезные данные? Это не сарказм. Мне надо оптимизировать код.

 
Renat Fatkhullin:

Посмотрите бета-версию 2772, пожалуйста.

Часть файловых операций мы ускорили. В Windows окружении надо ставить путь /MQL5/Files папки в пропуск у штатного Windows Defender антивируса, чтобы он не пытался анализировать эти тысячи файлы.

Очень сильно ускоряет работу с файлами при таком их количестве.

Пока не помогло.

build 2772 Ubuntu 18.04  wine-stable 5.0.2~bionic

2021.02.03 00:18:17.250    speedtest2 (EURUSD,H1)    size1 100 size2 1000 t 42139
2021.02.03 00:21:15.711    speedtest2 (EURUSD,H1)    size1 1 size2 20000 t 108880
2021.02.03 00:23:57.881    speedtest2 (EURUSD,H1)    size1 20 size2 1000 t 8677

Цифры чуть хуже, но это другая виртуалка, с одним ядром, и диск у неё не в .raw формате, а в .qcow2, он может быть медленнее.

Впрочем, цифры выросли непропорционально.

Ну и да, антивируса у меня нет, и в этих виртуалках, кроме MT-ME, вообще практически ничего нет.

Думаю, проблема может быть связана с трансляцией вызовов через Wine, кроме того, EXT4 и сама не очень любит много файлов в каталоге (что не мешает аналогичному bash-скрипту отрабатывать на порядки быстрее - real    0m0.855s при 20000 файлов в 1 каталоге).

 
fxsaber:

Речь о том, что когда видишь 100 000 вызовов функции, которая должна была вызваться всего 10 раз, то начинаешь искать ошибку в своем коде.

Сейчас нельзя сделать профайл не релизной версии с таким показателем.

Покажите полный отчет в нескольких видах с четкими доказательствами.

Вы в курсе, что в контекстном меню есть переключение режимов показа профилировщика и есть раскрываемая по клику детализация?

Вы точно задумываетесь над моими словами про инлайниг? Зачастую из 30 функций остается только 3.

Причина обращения: