Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике - страница 31
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Зачем это профилирование, если потом в релизе будет все иначе?
Зачем оптимизировать код функций, которые работают 10 мкс, а в релизе заинлайнятся и будут работать еще быстрее, вместо того, чтобы увидеть реально медленные участки?
Я нашёл причину, почему при профилировании показывало только одну функцию (да и та вызывается единожды при инициализации).
После удалении файла mqproj или сброса галочки "Максимальная оптимизация" стало выдавать реальную информацию.
Стало показывать информацию, но неправильно. Во многих местах отчёта, когда раскрываешь строку, там всё несвязанное между собой и между разворачиваемой строкой. На скриншоте я развернул только строки с такими ошибками.
UPD: пардон, последнюю (SymbolInfoDouble) развернул случайно. И OrderCalcMargin.
Зачем оптимизировать код функций, которые работают 10 мкс, а в релизе заинлайнятся и будут работать еще быстрее, вместо того, чтобы увидеть реально медленные участки?
Незачем. Меня при профилировании интересуют медленные функции, которых инлайн не ускорит, и медленные операторы (в частности системные функции и серверные операции). Очень тяжело всё это разыскивать в большом проекте, профилирование очень помогает.
Мне трудно на пальцах объяснить преимущества, у каждого свои методы и технологии программирования, но в начале разработки мой эксперт работал в десятки раз медленнее. И в оптимизации кода помог в частности и профайлер.
Стало показывать информацию, но неправильно. Во многих местах отчёта, когда раскрываешь строку, там всё несвязанное между собой и между разворачиваемой строкой. На скриншоте я развернул только строки с такими ошибками.
UPD: пардон, последнюю (SymbolInfoDouble) развернул случайно. И OrderCalcMargin.
Есть два режима показа результатов: по строкам и вызовам. Вы смотрите по строкам.
В этом случае показываются наиболее затратные строки в функции:
Если переключитесь врежим по вызовам, то будете видеть самые затратные вызовы этих функций:
Незачем. Меня при профилировании интересуют медленные функции, которых инлайн не ускорит, и медленные операторы (в частности системные функции и серверные операции). Очень тяжело всё это разыскивать в большом проекте, профилирование очень помогает.
Мне трудно на пальцах объяснить преимущества, у каждого свои методы и технологии программирования, но в начале разработки мой эксперт работал в десятки раз медленнее. И в оптимизации кода помог в частности и профайлер.
Ну так новый профайлер и должен будет (когда будет допилен) показать самые затратные функции, которые тратят больше всего времени в релизном проекте.
Я тоже много пользовался профайлером, и тоже многое ускорил. Но в данном случае, мне кажется, вы просто рано перешли на новую бету и получили гору багов вместо желаемого отчета.
Все будет хорошо. Когда-то)
Есть два режима показа результатов: по строкам и вызовам. Вы смотрите по строкам.
Разве по моему скриншоту не видно, что это режим по вызовам?
В этом случае показываются наиболее затратные строки в функции:
Если переключитесь врежим по вызовам, то будете видеть самые затратные вызовы этих функций:
Это понятно. Я о том, что при разворачивании функции показываются строки, не имеющие к ней отношения. Или, в режиме по вызовам, вызовы других функций.
вы просто рано перешли на новую бету и получили гору багов вместо желаемого отчета.
100%
Просто как раз сейчас потребовалось оптимизировать код, а тут как раз новый профайлер...
Перейду пока к другим делам.
Все будет хорошо. Когда-то)
Мои слова.
Скорее всего это построение списков ваших предыдущих тестов. Которых у вас наверняка много.
Проверим и перепишем.
Спасибо, совсем забыл про MQL5\Profiles\Tester\*.ini. Оказалось, что там 13К конфигураций.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике
fxsaber, 2021.01.30 11:40
Баг с кастомными символами.
Раньше при удалении группы, удалялись только скрытые символы в ней. Теперь удаляются все. Получается, что в Обзоре рынка висят вполне нормальные кастомные символы (работают запросы истории и т.д.), но при этом в базе данных символов (CTRL+U) их нет.
Просьба вернуть, как было.
b2775 - не поправили.
Разве по моему скриншоту не видно, что это режим по вызовам?
Это понятно. Я о том, что при разворачивании функции показываются строки, не имеющие к ней отношения. Или, в режиме по вызовам, вызовы других функций.
Вспомните еще раз о тотальном смешивании кода и потере границ. Это легко дает захват чужих строк.
А если идут указания на }, то это чаще всего границы скопа/видимости, где автоматически вызываются невидимые деструкторы объектов. То есть, если видите много }, значит знатно мусорите и это серьезная проблема производительности.
Я уже показывал пример, когда 8 строк вычислений превращаются в 4 совмещенные 128 битные SSE2 инструкции вычисления корней. Тут все так смешано, что точных границ строк по факту не существует:
Мы добавим режим отключения оптимизаций, чтобы можно было видеть картину вызовов лучше. Видеть лучше, но путем потери реальности.
Вот пример падения скорости на нашем тестовом коде, занимающемся хорошими вычислениями:
Здесь видны потери, вносимые профайлером по сравнению с релизным кодом. Это очень немного и терпимо.
Главный метод отказа от инлайнов дает ухудшение скорости в 3.7 раза по сравнению с профайлингом релизной версии. Отключение оптимизаций увеличивает время еще в 1.7 раз.
Понятно, что без инлайнинга(это один из важнейших методов оптимизации) и остальных оптимизаций, верить в найденные узкие места вообще нельзя. В данном случае отключение оптимизаций дало в 6.7 раз более медленный код.