Поделиться через


Пошаговое руководство. Использование 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-интерфейсов профилировщика

Создание кода для профилирования

  1. Создайте новый проект C# в Visual Studio или используйте построение из командной строки, в зависимости от предпочтений пользователя.

    ПримечаниеПримечание

    При построении должна использоваться библиотека Microsoft.VisualStudio.Profiler.dll, расположенная в каталоге Microsoft Visual Studio 9\Team Tools\Performance Tools.

  2. Скопируйте и вставьте в проект следующий код:

    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

  1. Откройте интегрированную среду разработки Visual Studio.В меню Анализировать выберите Профилировщик, Новый сеанс производительности.

  2. Добавьте скомпилированный двоичный файл в список Целевые объекты в окне Обозреватель производительности.Щелкните правой кнопкой мыши узел Целевые объекты и выберите команду Добавить конечный двоичный файл.Укажите местоположение двоичного файла в диалоговом окне Добавление целевого двоичного файла и нажмите кнопку Открыть.

  3. Выберите пункт Инструментирование в списке Метод на панели инструментов Обозреватель производительности.

  4. Нажмите кнопку Запустить с профилированием.

    Профилировщик выполнит инструментирование, запустит двоичный файл и создаст файл отчета о производительности.Файл отчета о производительности отображается в узле Отчетыобозревателя производительности.

  5. Откройте созданный файл отчета о производительности.

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

        DataCollection.StopProfile(
        ProfileLevel.Global,
        DataCollection.CurrentId);

Сбор и просмотр данных из командной строки

  1. Выполните компиляцию отладочной версии примера кода, ранее созданного в процедуре "Создание кода для профилирования" данного пошагового руководства.

  2. В случае профилирования управляемого приложения установите соответствующие переменные среды с помощью следующей команды:

    VsPefCLREnv /traceon

  3. Введите следующую команду:VSInstr <имя_файла>.exe

  4. Введите следующую команду:VSPerfCmd /start:trace /output:<имя_файла>.vsp

  5. Введите следующую команду:VSPerfCmd /globaloff

  6. Выполните программу.

  7. Введите следующую команду:VSPerfCmd /shutdown

  8. Введите следующую команду:VSPerfReport /calltrace:<имя_файла>.vsp

    В текущем каталоге создается CSV-файл, содержащий результирующие данные производительности.

См. также

Ссылки

Microsoft.VisualStudio.Profiler

Основные понятия

Приступая к работе со средствами профилирования

Использование средств профилирования из командной строки

Другие ресурсы

Справочник по API-интерфейсам профилировщика Visual Studio (машинный код)