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

#c #performance #optimization #profiling #qt-creator

#c #Производительность #оптимизация #профилирование #qt-creator

Вопрос:

Я часто читаю, что вы должны профилировать в режиме выпуска, чтобы компилятор выполнял оптимизацию. Однако, если я создаю профиль в режиме отладки в qt creator, легче увидеть, какая функция потребляет производительность, поскольку никакие функции не встроены. Просто понятнее, какая часть кода вызывает проблемы с производительностью.

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

Существуют ли рекомендации относительно профилирования в аспекте того, что я написал выше? Существуют ли «лучшие практики» в отношении профилирования в целом?

Комментарии:

1. Вы не должны профилировать в режиме отладки, потому что вызовы функций, которые требуют большой производительности в режиме отладки, могут быть сильно встроены и оптимизированы в режиме выпуска. Пример: у меня есть некоторый код, который предварительно обрабатывает некоторые данные для другой части моей программы, в режиме отладки это занимает более 5 секунд, в режиме выпуска это делается за 0,1 секунды. Вот почему профилирование в режиме отладки плохо.

2. Вы не можете превратить код O(n*n) , выполняемый в нечто, выполняющееся логарифмически, просто создав релизную версию. Если ваш код медленный из-за сложности вычислений, вы увидите, как это проявляется как в релизной, так и в отладочной версиях.

3. @Paul, но я вижу, что в режиме отладки это намного лучше, поскольку встраивание не выполняется. Особенно, если у меня есть несколько встроенных функций, но вызываемых из одной и той же функции: в режиме выпуска я бы не знал, какая из них вызывает проблему.

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

5. @dani: Вот почему я бы сказал, что вы правы , несмотря на общепринятую мудрость, которая гласит иначе.