Я запускаю профилировщик Visual Studio 2008 в сборке "RelDebug" моего приложения. Оптимизация включена, но встраивание только умеренное, присутствуют кадры стека и испускаются символы. Другими словами, RelDebug - это несколько оптимизированная сборка, которую можно отлаживать (хотя применяются обычные предостережения релиза о проверке переменных).
Я запускаю как сэмплирование, так и профилированный профилировщик на отдельных прогонах.
Результат? Профилировщик выборки дает результат, который выглядит разумным. Однако, когда я смотрю на результаты профилированного профилировщика, я вижу функции, которые не должны находиться даже в верхней части списка, доходя до.
Например, функция типа «SetFont», которая состоит только из 1 строки, присваивающей высоту члену класса. Или «SetClipRect», который просто назначает прямоугольник.
Конечно, я смотрю «Эксклюзивную» статистику (то есть минус дети).
Это случилось с кем-то еще? Это всегда происходит, когда мое приложение выросло до определенного размера. Это делает инструментальный профилировщик бесполезным в этой точке.
Я понял проблему. И профилировщики Visual Studio 2008, и Visual Studio 2010 являются посредственными (мягко говоря). Я купил Intel C ++ Studio, которая поставляется с усилителем vTune (профилировщик). Используя Intel Profiler для того же кода, я смог получить результаты профилирования, которые действительно имели смысл.