О профилировщике кода MT5 - страница 8

 

На картинке TotalCPU и SelfCPU (> 25%) приходятся на одну строку. Как это объяснить?

 
fxsaber #:

На картинке TotalCPU и SelfCPU (> 25%) приходятся на одну строку. Как это объяснить?

Оптимизация кода с пропаданием промежуточных строк и вычислений.

 
Renat Fatkhullin #:

Оптимизация кода с пропаданием промежуточных строк и вычислений.

Этой фразой можно объяснить все, что угодно.

 
fxsaber #:

Этой фразой можно объяснить все, что угодно.

это значит - будь уверен все нормально.

Ренату нужно профессионального пресс-конферента)

 
fxsaber #:

Этой фразой можно объяснить все, что угодно.

Я не один раз писал в ключе "Исходный код вашей программы для оптимизатора - лишь идея".

Компиляторы давно уже не смотрят на код как на приказ. И скоро еще умнее будут.


Для желающих попрактиковаться: https://godbolt.org/ - онлайновый эксплорер компилеров. Можно брать свои функции/микропрограммы и исследовать, до какого состояния разные компиляторы увечат код.

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

Compiler Explorer
Compiler Explorer
  • About the author
  • godbolt.org
Compiler Explorer is an interactive online compiler which shows the assembly output of compiled C++, Rust, Go (and many more) code.
 

Невозможно пользоваться профайлером. Аргументация ниже.

Запускаю в Тестере в профилировщике (inline отключен) советник.

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

Ну мало ли я ошибся? Ставлю туда BreakPoint и запускаю Debug в тестере. Не срабатывает!


Профилировщик врет! Никого не знаю, кто был бы им доволен. Почти все плюются.


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

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

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

Профилировщик работает правильно.

Просто вы все еще не можете отказаться от принципа "строки исходного кода имеют четкое соответствие в нативном результате". А они давно уже не имеют.

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

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


Но я поддерживаю вас. Сам мучаюсь с профилировщиком MSVC/CLang, постоянно проверяя ассемблерный код и переписывая, дабы улучшить конвееризацию и спрямить выполнение. Как и у вас - малое совпадение с реальным подстрочником и множество смешанных от инлайна и реордера счетчиков.


Как обычно, технические вопросы должны решаться с полной технической выкладкой и четко заявленными вопросами.

Сейчас прогнал профайлер на большом проекте и появились вопросы. В понедельник будем разбираться.
 
Renat Fatkhullin #:

Как обычно, технические вопросы должны решаться с полной технической выкладкой и четко заявленными вопросами без открытых ворот.

Не буду этого делать. Ветка в одни ворота.

 

просто никто не понял в чем его задача сейчас,

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

отличие от старого функционала, что этот нужно подольше подержать в запуске

add

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

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