#c #performance #optimization #profiling #qt-creator
#c #Производительность #оптимизация #профилирование #qt-creator
Вопрос:
Я часто читаю, что вы должны профилировать в режиме выпуска, чтобы компилятор выполнял оптимизацию. Однако, если я создаю профиль в режиме отладки в qt creator, легче увидеть, какая функция потребляет производительность, поскольку никакие функции не встроены. Просто понятнее, какая часть кода вызывает проблемы с производительностью.
Поэтому я иногда профилирую в режиме отладки и выпуска. Если меня интересует определенная часть моего кода, информация, которую я получаю в режиме отладки, становится более понятной. Это помогает найти проблему с вычислительной сложностью.
Существуют ли рекомендации относительно профилирования в аспекте того, что я написал выше? Существуют ли «лучшие практики» в отношении профилирования в целом?
Комментарии:
1. Вы не должны профилировать в режиме отладки, потому что вызовы функций, которые требуют большой производительности в режиме отладки, могут быть сильно встроены и оптимизированы в режиме выпуска. Пример: у меня есть некоторый код, который предварительно обрабатывает некоторые данные для другой части моей программы, в режиме отладки это занимает более 5 секунд, в режиме выпуска это делается за 0,1 секунды. Вот почему профилирование в режиме отладки плохо.
2. Вы не можете превратить код
O(n*n)
, выполняемый в нечто, выполняющееся логарифмически, просто создав релизную версию. Если ваш код медленный из-за сложности вычислений, вы увидите, как это проявляется как в релизной, так и в отладочной версиях.3. @Paul, но я вижу, что в режиме отладки это намного лучше, поскольку встраивание не выполняется. Особенно, если у меня есть несколько встроенных функций, но вызываемых из одной и той же функции: в режиме выпуска я бы не знал, какая из них вызывает проблему.
4. Проблема в том, что часто функции потребляют производительность, потому что они не встроены. Это также похоже на просьбу Усэйна Болта идти медленно, чтобы вам было легче его синхронизировать.
5. @dani: Вот почему я бы сказал, что вы правы , несмотря на общепринятую мудрость, которая гласит иначе.