연습: 프로파일러 API 사용Walkthrough: Using Profiler APIs

연습에서는 C# 응용 프로그램을 사용하여 Visual StudioVisual Studio 프로파일링 도구 API를 사용하는 방법을 보여 줍니다.The walkthrough uses a C# application to demonstrate how to use the Visual StudioVisual Studio Profiling Tools APIs. 프로파일러 API를 사용하여 계측 프로파일링 동안 수집되는 데이터 양을 제한합니다.You will use the profiler APIs to limit the amount of data that is collected during instrumentation profiling.

이 연습의 단계는 일반적으로 C/C++ 응용 프로그램에 적용됩니다.The steps in this walkthrough generally apply to a C/C++ application. 각 언어의 경우 빌드 환경을 적절하게 구성해야 합니다.For each language, you will have to configure your build environment appropriately.

일반적으로 샘플 프로파일링을 사용하여 응용 프로그램 성능 분석을 시작합니다.Typically, you will start to analyze application performance by using sample profiling. 샘플 프로파일링에서 병목 상태를 파악할 수 있는 정보를 제공하지 않는 경우 계측 프로파일링은 더 높은 수준의 세부 정보를 제공할 수 있습니다.If sample profiling does not provide information that pinpoints a bottleneck, instrumentation profiling can provide a greater level of detail. 계측 프로파일링은 스레드 상호 작용을 조사하는 데 매우 유용합니다.Instrumentation profiling is very useful for investigating thread interaction.

그러나 더 높은 수준의 세부 정보는 더 많은 데이터가 수집됨을 의미합니다.However, a greater level of detail means that more data is collected. 계측 프로파일링에서 대용량 데이터 파일을 만드는 것을 알 수 있습니다.You might find that instrumentation profiling creates large data files. 또한 계측은 응용 프로그램의 성능에 영향을 줄 가능성이 높습니다.Also, instrumentation is more likely to impact the performance of the application. 자세한 내용은 계측 데이터 값 이해샘플링 데이터 값 이해를 참조하세요.For more information, see Understanding Instrumentation Data Values and Understanding Sampling Data Values

Visual Studio 프로파일러를 사용하면 데이터의 수집을 제한할 수 있습니다.The Visual Studio profiler allows you to limit the collection of data. 이 연습에서는 프로파일러 API를 사용하여 데이터의 수집을 제한하는 방법의 예를 제공합니다.This walkthrough offers an example of how to limit the collection of data by using the profiler APIs. Visual Studio 프로파일러는 응용 프로그램 내에서 데이터 수집 제어에 대한 API를 제공합니다.The Visual Studio profiler provides an API for controlling data collection from within an application.

네이티브 코드의 경우 Visual Studio 프로파일러 API는 VSPerf.dll에 있습니다.For native code, the Visual Studio profiler APIs are in VSPerf.dll. 헤더 파일, VSPerf.h 및 가져오기 라이브러리, VSPerf.lib는 Microsoft Visual Studio 9\Team Tools\Performance Tools 디렉터리에 있습니다.The header file, VSPerf.h, and the import library, VSPerf.lib, are located in the Microsoft Visual Studio 9\Team Tools\Performance Tools directory.

관리되는 코드의 경우 프로파일러 API는 Microsoft.VisualStudio.Profiler.dll에 있습니다.For managed code, the profiler APIs are in the Microsoft.VisualStudio.Profiler.dll. 이 DLL은 Microsoft Visual Studio 9\Team Tools\Performance Tools 디렉터리에 있습니다.This DLL is found in the Microsoft Visual Studio 9\Team Tools\Performance Tools directory. 자세한 내용은 <xref:Microsoft.VisualStudio.Profiler>을 참조하십시오.For more information, see <xref:Microsoft.VisualStudio.Profiler>.

필수 구성 요소Prerequisites

이 연습에서는 사용자가 선택한 개발 환경이 디버깅 및 샘플링을 지원하도록 구성되었다고 가정합니다.This walkthrough assumes your choice of development environment is configured to support debugging and sampling. 다음 항목에서는 이러한 필수 구성 요소의 개요를 제공합니다.The following topics provide an overview of these prerequisites:

방법: 수집 방법 선택How to: Choose Collection Methods

방법: Windows 기호 정보 참조How to: Reference Windows Symbol Information

기본적으로 프로파일러가 시작되면 프로파일러는 전역 수준에서 데이터를 수집합니다.By default, when the profiler is started, the profiler collects data at the global level. 프로그램의 시작 부분에서 다음 코드는 전역 프로파일링을 해제합니다.The following code at the start of the program turns global profiling off.

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

API 호출을 사용하지 않고 명령줄에서 데이터 수집을 해제할 수 있습니다.You can turn off data collection at the command line without the using an API call. 다음 단계에서는 명령줄 빌드 환경이 프로파일링 도구를 실행하고 개발 도구로 구성되었다고 가정합니다.The following steps assume your command line build environment is configured to run the profiling tools and as your development tools. 여기에는 VSInstr 및 VSPerfCmd에 필요한 설정이 포함됩니다.This includes the settings necessary for VSInstr and VSPerfCmd. 명령줄 프로파일링 도구를 참조하세요.See Command-Line Profiling Tools.

프로파일러 API를 사용하여 데이터 수집 제한Limiting Data Collection Using Profiler APIs

프로파일링할 코드를 만들려면To create the code to profile

  1. Visual Studio에서 새 C# 프로젝트를 만들거나 기본 설정에 따라 명령줄 빌드를 사용합니다.Create a new C# project in Visual Studio, or use a command line build, depending on your preference.

    참고

    빌드는 Microsoft Visual Studio 9\Team Tools\Performance Tools 디렉터리에 있는 Microsoft.VisualStudio.Profiler.dll 라이브러리를 참조해야 합니다.Your build must reference the Microsoft.VisualStudio.Profiler.dll library, located in the Microsoft Visual Studio 9\Team Tools\Performance Tools directory.

  2. 다음 코드를 복사하여 프로젝트에 붙여넣습니다.Copy and paste the following code into your project:

    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에서 데이터를 수집하고 보려면To collect and view data in the Visual Studio IDE

  1. Visual StudioVisual Studio IDE를 엽니다.Open the Visual StudioVisual Studio IDE. 분석 메뉴에서 프로파일러를 가리킨 다음 새 성능 세션을 선택합니다.On to the Analyze menu, point to Profiler, and then select New Performance Session.

  2. 성능 탐색기 창의 대상 목록에 컴파일된 이진 파일을 추가합니다.Add your compiled binary to the Targets list in the Performance Explorer window. 대상을 마우스 오른쪽 단추로 클릭한 다음 대상 이진 파일 추가를 선택합니다.Right-click Targets, and then select Add Target Binary. 대상 이진 파일 추가 대화 상자에서 이진 파일을 찾은 다음 열기를 클릭합니다.Locate the binary in the Add Target Binary dialog box, and then click Open.

  3. 성능 탐색기 도구 모음의 메서드 목록에서 계측을 선택합니다.Select Instrumentation from the Method list on the Performance Explorer toolbar.

  4. 프로파일링 시작을 클릭합니다.Click Launch with Profiling.

    프로파일러는 이진 파일을 계측 및 실행하고 성능 보고서 파일을 만듭니다.The profiler will instrument and execute the binary and create a performance report file. 성능 보고서 파일은 성능 탐색기보고서 노드에 표시됩니다.The performance report file will appear in the Reports node of the Performance Explorer.

  5. 결과 성능 보고서 파일을 엽니다.Open the resulting performance report file.

    기본적으로 프로파일러가 시작되면 프로파일러는 전역 수준에서 데이터를 수집합니다.By default, when the profiler is started, the profiler will collect data at the global level. 프로그램의 시작 부분에서 다음 코드는 전역 프로파일링을 해제합니다.The following code at the start of the program turns global profiling off.

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

명령줄에서 데이터를 수집하고 보려면To collect and view data at the command line

  1. 이 연습 앞부분의 "프로파일링할 코드 만들기" 절차에서 만든 샘플 코드의 디버그 버전을 컴파일합니다.Compile a debug version of the sample code you created in the "Creating Code to Profile" procedure, earlier in this walkthrough.

  2. 관리되는 응용 프로그램을 프로파일링하려면 다음 명령을 입력하여 적절한 환경 변수를 설정합니다.To profile a managed application, type the following command to set the appropriate environment variables:

    VsPefCLREnv /traceonVsPefCLREnv /traceon

  3. VSInstr <filename>.exe 명령을 입력합니다.Type the following command:VSInstr <filename>.exe

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

  5. VSPerfCmd /globaloff 명령을 입력합니다.Type the following command:VSPerfCmd /globaloff

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

  7. VSPerfCmd /shutdown 명령을 입력합니다.Type the following command:VSPerfCmd /shutdown

  8. VSPerfReport /calltrace:<filename>.vsp 명령을 입력합니다.Type the following command:VSPerfReport /calltrace:<filename>.vsp

    결과 성능 데이터와 함께 현재 디렉터리에 .csv 파일이 만들어집니다.A .csv file is created in the current directory with the resulting performance data.

참고 항목See Also

<xref:Microsoft.VisualStudio.Profiler><xref:Microsoft.VisualStudio.Profiler>
Visual Studio 프로파일러 API 참조(네이티브) Visual Studio Profiler API Reference (Native)
시작 Getting Started
명령줄에서 프로파일링Profiling from the Command-Line