Как видеть миллисекунды в Visual Studio Performance Analyzer вместо% samples

Я пытаюсь проанализировать свою программу с помощью анализатора производительности Visual Studio, но я новичок в этом инструменте.

Если я запускаю свою программу в анализаторе, я получаю отчет, где я вижу% от общего времени анализа, которое выполняла функция. Но общее время может варьироваться от 5 секунд до 500 секунд, так как я могу узнать, не повлияли ли мои оптимизации?

Если бы это было в миллисекундах, у меня не было бы этой проблемы, но я не смог бы найти какую-либо функцию, например "show in milliseconds" или подобное. Существует ли такая функция?

enter image description here

Ответы

Ответ 1

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

Выборка (по умолчанию)

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

Метод выборки является легким (без изменений в ваших двоичных файлах) и мало влияет на выполнение методов приложения: он собирает только статистические данные о работе, выполняемой приложением во время сеанса профилирования.

Это хорошо для первоначальных исследований. Высокий% может означать медленную функцию или функцию, которая вызывается слишком часто.

Инструменты

Метод инструментального профилирования собирает подробные сроки для вызовов функций в профилированном приложении. Как? Он вводит код, который фиксирует информацию о времени для каждой функции в инструментальном файле и каждый вызов функции, выполняемый этими функциями. Instrumentation также определяет, когда функция вызывает операцию для операций, таких как запись в файл.

В отчетах вы увидите Время приложения (общее время, затрачиваемое на выполнение части кода, но исключая время, затрачиваемое на вызовы в операционную систему, ado.net, вызовы служб...) и Истекшее время (общее время, затраченное на выполнение фрагмента кода).

Этот режим профилирования также имеет более высокие служебные расходы. Это неизбежно меняет характеристики производительности вашего приложения, но оно минимально.

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