연습: 프로파일러 API 사용

Visual Studio 2017 RC에 대한 최신 설명서는 Visual Studio 2017 RC 설명서를 참조하세요.

이 연습에서는 C# 응용 프로그램을 사용하여 Visual Studio 프로파일링 도구 API를 사용하는 방법을 보여 줍니다. 여기서는 프로파일러 API를 사용하여 계측 프로파일링 중에 수집되는 데이터의 양을 제한하게 됩니다.

이 연습의 단계는 일반적으로 C\/C++ 응용 프로그램에 적용됩니다. 각 언어에 대해 사용자의 빌드 환경을 적절하게 구성해야 합니다.

일반적으로 샘플 프로파일링을 사용하여 응용 프로그램의 성능 분석을 시작합니다. 샘플 프로파일링에서 병목 위치를 정확히 알려 주는 정보가 제공되지 않을 경우 계측 프로파일링을 통해 보다 자세한 정보를 얻을 수 있습니다. 계측 프로파일링은 스레드 상호 작용을 조사하는 데 매우 유용합니다.

그러나 보다 자세한 정보가 제공된다는 것은 더 많은 데이터가 수집된다는 것을 의미합니다. 즉, 계측 프로파일링에서는 대량의 데이터 파일이 만들어집니다. 또한 계측은 응용 프로그램의 성능에 보다 많은 영향을 줄 수 있습니다. 자세한 내용은 계측 데이터 값 이해샘플링 데이터 값 이해을 참조하십시오.

Visual Studio 프로파일러를 사용하면 데이터 수집을 제한할 수 있습니다. 이 연습에서는 프로파일러 API를 사용하여 데이터 수집을 제한하는 방법을 보여 주는 예제를 제공합니다. Visual Studio 프로파일러에서는 응용 프로그램 내에서 데이터 수집을 제어하는 API를 제공합니다.

네이티브 코드의 경우 Visual Studio 프로파일러 API는 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 디렉터리에 있습니다. 자세한 내용은 <xref:Microsoft.VisualStudio.Profiler>을 참조하십시오.

사전 요구 사항

이 연습에서는 디버깅 및 샘플링을 지원하도록 개발 환경을 구성했다고 가정합니다. 다음 항목에서는 이러한 필수 구성 요소에 대해 간략히 설명합니다.

방법: 수집 방법 선택

방법: Windows 기호 정보 참조

기본적으로 프로파일러를 시작하면 프로파일러에서는 전역 수준의 데이터를 수집합니다. 프로그램의 처음 부분에 있는 다음 코드는 전역 프로파일링을 해제합니다.

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

API 호출을 사용하지 않고 명령줄에서 데이터 수집을 해제할 수 있습니다. 다음 단계에서는 명령줄 빌드 환경이 개발 도구뿐 아니라 프로파일링 도구도 실행하도록 구성되었다고 가정합니다. 여기에는 VSInstr 및 VSPerfCmd에 필요한 설정이 포함됩니다. 자세한 내용은 명령줄 프로파일링 도구를 참조하십시오.

프로파일러 API를 사용하여 데이터 수집 제한

프로파일링할 코드를 만들려면

  1. 취향에 따라 Visual Studio에서 새 C# 프로젝트를 만들거나 명령줄 빌드를 사용합니다.

    참고

    빌드는 Microsoft Visual Studio 9\Team Tools\Performance Tools 디렉터리에 있는 Microsoft.VisualStudio.Profiler.dll 라이브러리를 참조해야 합니다.

  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 IDE에서 데이터를 수집하거나 보려면

  1. Visual Studio IDE를 엽니다. 분석 메뉴에서 프로파일러를 가리킨 다음 새 성능 세션을 선택합니다.

  2. 성능 탐색기 창의 대상 목록에 컴파일된 이진 파일을 추가합니다. 대상을 마우스 오른쪽 단추로 클릭한 다음 대상 이진 파일 추가를 선택합니다. 대상 이진 파일 추가 대화 상자에서 이진 파일을 찾아 열기를 클릭합니다.

  3. 성능 탐색기 도구 모음의 방법 목록에서 계측을 선택합니다.

  4. 프로파일링 시작을 클릭합니다.

    그러면 프로파일러가 이진 파일을 계측 및 실행하고 성능 보고서 파일을 만듭니다. 성능 보고서 파일은 성능 탐색기보고서 노드에 나타납니다.

  5. 생성된 성능 보고서 파일을 엽니다.

    기본적으로 프로파일러를 시작하면 프로파일러에서는 전역 수준의 데이터를 수집합니다. 프로그램의 처음 부분에 있는 다음 코드는 전역 프로파일링을 해제합니다.

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

명령줄에서 데이터를 수집하고 보려면

  1. 이 연습의 앞부분에 있는 "프로파일링할 코드를 만들려면" 절차에서 만든 샘플 코드의 디버그 버전을 컴파일합니다.

  2. 관리되는 응용 프로그램을 프로파일링하려면 다음 명령을 입력하여 해당 환경 변수를 설정합니다.

    VsPefCLREnv \/traceon

  3. VSInstr <filename>.exe 명령을 입력합니다.

  4. VSPerfCmd \/start:trace \/output:<filename>.vsp 명령을 입력합니다.

  5. VSPerfCmd \/globaloff 명령을 입력합니다.

  6. 프로그램을 실행합니다.

  7. VSPerfCmd \/shutdown 명령을 입력합니다.

  8. VSPerfReport \/calltrace:<filename>.vsp 명령을 입력합니다.

    결과 성능 데이터가 있는 .csv 파일이 현재 디렉터리에 만들어집니다.

참고 항목

<xref:Microsoft.VisualStudio.Profiler>
Visual Studio 프로파일러 API 참조(네이티브)
시작
명령줄에서 프로파일링