Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
просто никто не понял в чем его задача сейчас,
все же просто там, невидимый таймер делает стоп и куда он чаще попадает надо смотреть что там, легкая строка или тяжелая функция
отличие от старого функционала, что этот нужно подольше подержать в запуске
add
если функция тяжелая и часто вызывается, в нее и будет постоянно ударять таймер, смотрим значит что можно с ней сделать
Идеальный результат - что то типа проверка рабочего времени, у меня там профайлер постоянно показывает остановкиПовысим в несколько раз частоту замеров и посмотрим на результат.
Это проблема всех профайлеров оптимизированного кода. Любая попытка инструментации кода в разы изменяет результаты и показывает на совершенно не на те узкие места.
И еще важно знать, что быстрые однопроходные места практически попадают в слепую зону и в отчетах видны главным образом цикличные куски кода.Повысим в несколько раз частоту замеров и посмотрим на результат.
Это проблема всех профайлеров оптимизированного кода. Любая попытка инструментации кода в разы изменяет результаты и показывает на совершенно не на те узкие места.
И еще важно знать, что быстрые однопроходные места практически попадают в слепую зону и в отчетах видны главным образом цикличные куски кода.Поэтому люди пытаются образцы этх быстрых мест (которые выполняются может и быстро, но на каждом тике, стакане, таймере, транзакции, ...) ставить в циклы, чтобы понять, какой из вариантов реализации лучше использовать. А компилятор эти тестовые, но фактически пустые (т.е. "бесполезные"), циклы выпиливает.
если функция тяжелая и часто вызывается, в нее и будет постоянно ударять таймер, смотрим значит что можно с ней сделать
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
О профилировщике кода MT5
fxsaber, 2023.10.28 20:58
десятки процентов TotalCPU приходится на одну из функций, которая не должна вызываться.
Ну мало ли я ошибся? Ставлю туда BreakPoint и запускаю Debug в тестере. Не срабатывает!
с виду простая схема, просто считать сколько куда упал взор,
надо просить Рената, напомнить, что он смотрел два варианта профайлера
Главное не в том, что разные принципы работы старого профайлера и нового. А в том, что один из них великолепно справляется с задачей нахождения слабых мест, другой - отвратительно.
Ренат помню давал объяснение, на сколько это актуально сложно сказать
конкретные затупы оба способа показывают
Это проблема всех профайлеров оптимизированного кода.
Может профайлить без оптимизации?
Может профайлить без оптимизации?
Только в таком режиме и получается достичь хоть какого-то понимания результатов.
Поэтому люди пытаются образцы этх быстрых мест (которые выполняются может и быстро, но на каждом тике, стакане, таймере, транзакции, ...) ставить в циклы, чтобы понять, какой из вариантов реализации лучше использовать. А компилятор эти тестовые, но фактически пустые (т.е. "бесполезные"), циклы выпиливает.
После обнаружения тормозных мест уже можно и нужно переходить к режиму обкладывания микросекундными счетчиками нужных кусков кода.
Мы сами так делаем в реальном коде проектов в боевых условиях.
Выпущена бета 4050 с повышенной в 5 раз частотой семплинга(сбора статистик) профилировщика.
Обновитесь, пожалуйста. Это позволит увидеть более точную картину производительности.
Рассмотрим результаты профилировки на штатном примере MQL5\Scripts\Examples\Canvas\CanvasSample.mq5. Он хорош тем, что содержит массу мелких функций, хорошо оптимизируется и штатно завершается.
Для оценки скорости я добавил пару строк:
Режим полной оптимизации и инлайнинга
Результаты лучше смотреть в режиме "Functions by Lines", переключив вид в контекстном меню. Удобно экпортировать в Эксель для последующего сравнения:
Обратите внимание, что у программы осталось всего две функции: OnStart и CCanvas::Line, а все остальное было перемешано, оптимизировано и слито в одну большую функцию.
Достаточно понятные строки (53 шт), где были реальные затраты. Большинство линейных участков не видны по причине их оптимизированности и малым затратам.
Клики по строкам переносят внутрь заинлайненных функций - мы достаточно хорошо провели свою работу по сохранению источников инлайна при профилировке итоговой программы. Конечно, держите в уме "mix & reorder" встраиваемых строк - диффузия достаточно широка.
Режим оптимизации без инлайнинга
Время выполнения заведомо увеличилось:
Это уже никуда не годится - показываются одни вызовы функций и полный отказ от инлайнинга. При просмотре вызываемых функций достаточно хорошо показываются расходы внутри - детали в тултипах:
Отключение оптимизации и инлайнинга
По времени это катастрофа:
Результат печальный и никак не помогает понять узкие места.
Вывод: