Понимание методов сбора данных о производительности профайлера

В этом документе описаны методы сбора данных, которые используют средства в Профилировщике производительности Visual Studio.

Выборка

Выборка собирает статистические данные о работе, выполняемой приложением во время профилирования, и это хорошее место для поиска областей для ускорения приложения. Через указанные интервалы метод выборки собирает сведения о функциях, выполняемых в приложении. Сбор данных выполняется путем сбора сведений о приложении через регулярный интервал или частоту выборки, например каждую миллисекунда. Собранные данные анализируются для создания модели распределения времени, проведённого в приложении. Если вам нужны точные измерения времени вызова или поиск проблем с производительностью в приложении в первый раз, может потребоваться использовать выборку.

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

После завершения сбора данных средство использования ЦП анализирует захваченные данные и отображает отчет.

Отслеживание

Трассировка обеспечивает более подробную информацию о частоте выполнения метода. Если вам нужны точные показатели количества вызовов, используйте трассировку вызовов. Трассировка может более значительно влиять на производительность вашего кода в процессе сбора, тогда как выборка создает только небольшую нагрузку. Кроме того, трассировка может быть медленнее для анализа, так как требуется больше времени для просмотра данных после сбора.

Инструментация

Профилирование инструментирования собирает подробные сведения о работе, выполняемой приложением во время выполнения профилирования. Сбор данных выполняется средствами, которые либо внедряют код в двоичный файл, который записывает сведения о времени, либо с помощью перехватчиков обратного вызова для сбора и выдачи точных сведений о времени и подсчете вызовов во время выполнения приложения. Метод инструментирования имеет высокую нагрузку по сравнению с подходами на основе выборки. Средства в профилировщике производительности, использующие инструментирование, включают средства инструментирования и средство выделения объектов .NET .

Выборка и инструментирование

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

При инструментировании каждый целевой вызов функции в вашем приложении аннотируется и подвергается инструментированию так, что при его вызове он добавляется в трассировку вместе с информацией о вызывающем объекте. При выборке текущий стек вызовов опрашивается из ЦП через интервал, а затем каждый кадр добавляется в трассировку.