Я запускаю профилировщик Visual Studio 2008 в сборке «RelDebug» моего приложения. Оптимизация включена, но вложение только умеренное, присутствуют кадры стека, и символы испускаются. Другими словами, RelDebug - это несколько оптимизированная сборка, которая может быть отлажена (хотя обычные ограничения в отношении об обследовании переменных применяются).Visual Studio 2008 Profiler - Instrumented производит странные результаты
Я запускаю как пробоотборник, так и инструментальный профилировщик на отдельных прогонах.
Результат? Профилировщик выборки дает результат, который выглядит разумным. Однако, когда я смотрю на результаты Инструментального профилировщика, я вижу функции, которые не должны быть даже ближе к вершине списка, выходящим вверх.
Например, функция типа SetFont, состоящая только из 1 строки, назначающей высоту члену класса. Или «SetClipRect», который просто присваивает прямоугольник.
Конечно, я смотрю статистику «Эксклюзив» (т. Е. Минус дети).
Это случается с кем-то еще? Это всегда происходит, как только мое приложение выросло до определенного размера. В этот момент он становится бесполезным.
Я понял, что проблема. Как Visual Studio 2008, так и профилировщики Visual Studio 2010 являются посредственными (чтобы выразить это вежливо). Я купил Intel C++ Studio, который поставляется с vTune Amplifier (профилировщик). Используя профилировщик Intel по тому же самому коду, я смог получить результаты профилирования, которые действительно имели смысл.
Я говорю о том, что функции, которые ни при каких обстоятельствах не должны приближаться к вершине, появляются наверху. Это похоже на ошибку в профилировщике Instrumented. Профилировщик Sampling дает более точные результаты, которые имеют смысл. Я уже оптимизировал большую часть того, что можно оптимизировать без внесения алгоритмических изменений (мое приложение мухи). Я хочу использовать инструментальный профилировщик, чтобы выяснить, что заставляет мое приложение замедляться при использовании OpenMP и отладчика (без приложения отладчика, приложение не замедляется), но неверный результат из профилировщика Instrumented попадает в путь. –
@TheVinn: Если вы считаете, что выиграть не так много, может быть, нет, и, возможно, есть: http: // stackoverflow.com/questions/926266/performance-optimization-strategy-of-last-resort/927773 # 927773 IMHO 1) не имеет значения, замедляет ли ваша техника «профилирования» приложение, если оно точно указывает на утверждения что стоило бы вам больше всего, потому что, когда вы их исправляете и прекратите диагностировать, скорость вернется, и 2) приборы могут рассказать вам, в лучшем случае, сколько% времени каждая процедура находится в стеке (и это его точная стоимость). Сэмплирование стека ... –
... говорит вам, что на уровне инструкций или даже на уровне инструкций он более информативен, и даже облегчает вычисление _why_ вызывается, как вы знаете, можете ли вы замени это. –