Общие сведения о методах сбора данных о производительности профилировщика

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

Образец

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

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

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

Трассировка

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

Инструментирование

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

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

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

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