Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В 674 билде появилась новая возможность профилировки MQL5 кода. Теперь можно с легкостью оценить, найти и оптимизировать узкие места в своем коде, имея на руках точные данные.
Для примера возьмем достаточно затратный пример скрипта RayTracer.Bmp.mq5, который производит большое количество вычислений и выводит результаты в BMP файл. Его исходник приложен ниже.
Скомпилируем скрипт и запустим его на чарте. Он достаточно быстро отработает, покажет в журнале время выполнения так:
Сгенерированный файл picture.bmp можно найти в каталоге /MQL5/Files:
Скрипт занимается рейтрейсингом для визуализации сложной сцены из большого количества объектов.
Теперь попробуем оценить затраты каждой функции и строки этой программы. Для этого в редакторе кода просто выполним команду "Start Profiling", дождемся окончания работы скрипта на чарте и вернемся в редактор.
Профайлинг вносит задержки на контроль кода, замедляя работу программы в 3-4 раза, что можно увидеть по увеличившемуся времени генерации:
Посмотрим во вкладку "Profile" редактора. По умолчанию открывается режим "Functions by Calls", который показывает обобщенные результаты по функциям.
В таблице показываются:
Показ отчета по функциям предназначен для общей оценки затрат. Щелкая по пиктограмме с плюсиком можно раскрывать функции, а двойным кликом - переходить на исходный код.
Более детально увидеть расходы ресурсов можно в режиме "Functions by Lines", где указываются замеры каждой строки:
Профилировщик работает в режиме кодогенератора с полным циклом оптимизации. Часть кода не будет показана в чистом виде с точностью до строки, так как MQL5 компилятор активно использует инлайнинг функций ради ускорения программ.
При необходимости, результаты профилировки можно экспортировать в Open XML, HTML или CSV файлы.
Ну что можно еще сказать? Мы сделали еще один простой и удобный инструмент для разработчиков!