Пошаговое руководство. Использование API-интерфейсов профилировщика
В данном пошаговом руководстве для демонстрации возможностей интерфейсов API средств профилирования Visual Studio используется приложение C#.API-интерфейсы профилировщика используются для ограничения количества данных, собираемых во время профилирования с инструментированием.
В целом, действия, описанные в этом пошаговом руководстве, можно применять к приложениям C/C++.Для каждого языка программирования необходимо соответствующим образом настроить среду построения.
Анализ производительности приложения, как правило, начинается с профилирования с выборкой.Если с помощью профилирования с выборкой не удается точно локализовать проблему производительности, можно воспользоваться профилированием с инструментированием для получения более детальных сведений.Профилирование с инструментированием особенно полезно при изучении взаимодействия потоков.
Однако более высокий уровень детализации приводит к увеличению объема собираемых данных.Порой при профилировании с инструментированием создаются файлы данных огромного размера.Кроме того, существует высокая вероятность того, что инструментирование отрицательно скажется на производительности приложения.Дополнительные сведения см. в разделах Общие сведения о значениях данных инструментирования в средствах профилирования и Общие сведения о значениях выборочных данных в средствах профилирования.
Профилировщик Visual Studio позволяет ограничить объем собираемых данных.В данном пошаговом руководстве приведен пример ограничения сбора данных с помощью API-интерфейсов профилировщика.Профилировщик Visual Studio предоставляет API-интерфейс для управления сбором данных из приложения.
Для машинного кода API-интерфейсы профилировщика Visual Studio расположены в файле VSPerf.dll.Файл заголовка VSPerf.h и библиотека импорта VSPerf.lib расположены в каталоге Microsoft Visual Studio 9\Team Tools\Performance Tools.
Для управляемого кода API-интерфейсы находятся в файле Microsoft.VisualStudio.Profiler.dll.Эта библиотека DLL расположена в каталоге Microsoft Visual Studio 9\Team Tools\Performance Tools.Дополнительные сведения см. в разделе Microsoft.VisualStudio.Profiler.
Обязательные компоненты
В данном пошаговом руководстве предполагается, что используемая среда разработки настроена для отладки и выборки.В следующих разделах представлены общие сведения о предварительных требованиях к среде разработки.
Практическое руководство. Выбор методов сбора данных
Практическое руководство. Справочная информация о символах Windows
По умолчанию при запуске профилировщика он выполняет сбор данных на глобальном уровне.При включении в начало программы указанного ниже кода профилирование на глобальном уровне отключается.
DataCollection.StopProfile(
ProfileLevel.Global,
DataCollection.CurrentId);
Сбор данных можно отключить из командной строки, не вызывая API-интерфейс.В следующих шагах предполагается, что среда построения из командной строки настроена для работы как средств профилирования, так и средств разработки.В том числе настроены параметры, необходимые для работы средств VSInstr и VSPerfCmd.См. раздел "Средства профилирования из командной строки"
Ограничение сбора данных с помощью API-интерфейсов профилировщика
Создание кода для профилирования
Создайте новый проект C# в Visual Studio или используйте построение из командной строки, в зависимости от предпочтений пользователя.
Примечание При построении должна использоваться библиотека Microsoft.VisualStudio.Profiler.dll, расположенная в каталоге Microsoft Visual Studio 9\Team Tools\Performance Tools.
Скопируйте и вставьте в проект следующий код:
using System; using System.Collections.Generic; using System.Text; using Microsoft.VisualStudio.Profiler; namespace ConsoleApplication2 { class Program { public class A { private int _x; public A(int x) { _x = x; } public int DoNotProfileThis() { return _x * _x; } public int OnlyProfileThis() { return _x + _x; } public static void Main() { DataCollection.StopProfile( ProfileLevel.Global, DataCollection.CurrentId); A a; a = new A(2); int x; Console.WriteLine("2 square is {0}", a.DoNotProfileThis()); DataCollection.StartProfile( ProfileLevel.Global, DataCollection.CurrentId); x = a.OnlyProfileThis(); DataCollection.StopProfile( ProfileLevel.Global, DataCollection.CurrentId); Console.WriteLine("2 doubled is {0}", x); } } } }
Сбор и просмотр данных в интегрированной среде разработки Visual Studio
Откройте интегрированную среду разработки Visual Studio.В меню Анализировать выберите Профилировщик, Новый сеанс производительности.
Добавьте скомпилированный двоичный файл в список Целевые объекты в окне Обозреватель производительности.Щелкните правой кнопкой мыши узел Целевые объекты и выберите команду Добавить конечный двоичный файл.Укажите местоположение двоичного файла в диалоговом окне Добавление целевого двоичного файла и нажмите кнопку Открыть.
Выберите пункт Инструментирование в списке Метод на панели инструментов Обозреватель производительности.
Нажмите кнопку Запустить с профилированием.
Профилировщик выполнит инструментирование, запустит двоичный файл и создаст файл отчета о производительности.Файл отчета о производительности отображается в узле Отчетыобозревателя производительности.
Откройте созданный файл отчета о производительности.
По умолчанию при запуске профилировщика он выполняет сбор данных на глобальном уровне.При включении в начало программы указанного ниже кода профилирование на глобальном уровне отключается.
DataCollection.StopProfile(
ProfileLevel.Global,
DataCollection.CurrentId);
Сбор и просмотр данных из командной строки
Выполните компиляцию отладочной версии примера кода, ранее созданного в процедуре "Создание кода для профилирования" данного пошагового руководства.
В случае профилирования управляемого приложения установите соответствующие переменные среды с помощью следующей команды:
VsPefCLREnv /traceon
Введите следующую команду:VSInstr <имя_файла>.exe
Введите следующую команду:VSPerfCmd /start:trace /output:<имя_файла>.vsp
Введите следующую команду:VSPerfCmd /globaloff
Выполните программу.
Введите следующую команду:VSPerfCmd /shutdown
Введите следующую команду:VSPerfReport /calltrace:<имя_файла>.vsp
В текущем каталоге создается CSV-файл, содержащий результирующие данные производительности.
См. также
Ссылки
Microsoft.VisualStudio.Profiler
Основные понятия
Приступая к работе со средствами профилирования
Использование средств профилирования из командной строки
Другие ресурсы
Справочник по API-интерфейсам профилировщика Visual Studio (машинный код)