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


Пошаговое руководство. Использование API-интерфейсов профилировщика

Обновлен: Ноябрь 2007

В данном пошаговом руководстве для демонстрации возможностей интерфейсов API Сред. профилирования Visual Studio Team System Developer Edition используется приложение 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 или используйте построение из командной строки, в зависимости от предпочтений пользователя.

    Bb514149.alert_note(ru-ru,VS.90).gifПримечание.

    При построении должна использоваться библиотека 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 (машинный код)

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

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