Справка по MetaEditor

Профилирование кода

Профилирование кода

Профилирование — это сбор характеристик программы, таких как время выполнения отдельных ее фрагментов (функций, строк). В MetaEditor встроена штатная функция профилирования, благодаря которой программист может провести оптимизацию исходного кода.

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

Многие программы, в особенности индикаторы, осуществляют какие-либо расчеты только при приходе нового тика (OnTick, OnCalculate). Таким образом, для оценки производительности приходится ждать поступления новых тиков в режиме реального времени. Используя профилирование на исторических данных, вы сможете сразу давать нужную нагрузку и проверять работу программ даже в выходные дни, когда рынки закрыты.

Запуск профилирования

Откройте файл исходного кода программы (mq4 или mq5). В меню "Отладка" или на панели инструментов "Стандартная" нажмите "Начать профилирование на реальных данных Начать профилирование на реальных данных" или "Начать профилирование на исторических данных Начать профилирование на исторических данных".

После этого автоматически будет скомпилирована специальная версия программы для профилирования. В зависимости от выбранного типа профилирования программа будет запущена на обычном графике в торговом терминале или в тестере стратегий (в визуальном режиме).

По умолчанию, приложение запускается на графике EURUSD H1. Для запуска на другом символе и периоде, укажите их на вкладке "Отладка" в настройках MetaEditor.

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

Далее следует остановить профилирование командой "Завершить профилирование Завершить профилирование" меню "Отладка" или на панели инструментов "Стандартная".

Для получения более точных результатов профилирования рекомендуется вручную удалять программу с графика вместо использования команды "Завершить профилирование Завершить профилирование".

Просмотр результатов профилирования

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

Режим "Функции по вызовам"

Результаты профилирования

В данном режиме результаты профилирования представлены по функциям:

  • Функции — имя функции или метода класса.
  • Строка — строка, в которой осуществляется вызов функции. Если функция вызывается в нескольких местах программы, ее иконка будет помечена значком Раскрыть. При нажатии на нее будет открыта информация по каждому вызову.
  • Количество — количество вызовов функции за время работы программы.
  • Время — время выполнения функции в микросекундах, а также в процентах относительно времени исполнения всех функций. Время исполнения функции есть сумма времени исполнения всех функций, вызываемых внутри нее.
  • График — график по времени выполнения функций.

При помощи иконок указывается тип функций:

  • Пользовательская функция —  пользовательская функция;
  • Системная функция — системная функция;
  • Функция обработки событий — функция обработки событий (On*);
  • Метод класса — метод класса.

Помимо указанных типов функций, в профилировщике отображаются:

  • Системная функция @global_initializations — информация по инициализации всех глобальных переменных;
  • Системная функция @global_deinitializations — информация по деинициализации всех глобальных переменных;

Чтобы перейти к просмотру функции в файле, дважды щелкните на ней левой кнопкой мыши.

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

Режим "Функции по строкам"

Результаты профилирования

В данном режиме информация о времени работы программы представлена по строкам. Строки сгруппированы по функциям программы.

  • Функции — имя функции.
  • Строка — номер строки, для которой отображается информация. Чтоб просмотреть информацию по времени выполнения каждой строки функции, нажмите значок Раскрыть.
  • Количество — сколько раз был исполнен код в указанной строке.
  • Время — время исполнения кода в указанной строке в микросекундах и процентах. Показатели в процентах для каждой строки отображаются относительно времени исполнения функции. Процентные показатели для функций отображаются относительно времени исполнения всей программы.
  • График — график по времени выполнения.

Чтобы перейти к просмотру строке в файле, дважды щелкните на ней левой кнопкой мыши.

Контекстное меню

В контекстном меню доступны следующие команды:

  • Открыть — перейти к строке или функции в файле исходного кода. Это же действие можно выполнить двойным кликом мышью или нажатием клавиши Enter.
  • Развернуть все — развернуть все свернутые функции;
  • Свернуть все —  свернуть все развернутые функции;
  • Функции по строкам — перейти в режим просмотра результатов профилирования по строкам;
  • Функции по вызовам —  перейти в режим просмотра результатов профилирования по вызовам;
  • Экспорт — экспортировать результаты профилирования в формате Open XML (MS Office Excel), HTML (Internet Explorer) или CSV (текстовый файл).
  • Авторазмер — включить/выключить автоматическую установку размеров полей. Это же действие выполняется нажатием клавиши "A";
  • Сетка — включить/выключить сетку, разделяющую поля. Это же действие можно выполнить, нажав клавишу "G".