Windows 스토어 앱에서 Visual C++, Visual C# 및 Visual Basic 코드에 대한 성능 데이터 분석
이 항목에서는 Microsoft Visual Studio Express 2012 for Windows 8 프로파일링 도구의 보고서 뷰에 표시되는 Visual C++, Visual C# 및 Visual Basic 코드에 대한 성능 데이터에 대해 설명합니다. Visual C++, Visual C# 및 Visual Basic 성능 데이터를 수집하려면 다음 항목 중 하나를 참조하세요.
로컬 컴퓨터의 Windows 스토어 앱에서 Visual C++, Visual C# 및 Visual Basic 코드를 프로파일링하는 방법
로컬 컴퓨터에 Visual C++, Visual C# 및 Visual Basic JavaScript 응용 프로그램 구성 요소에 대 한 성능 데이터를 수집 하는 방법
원격 장치의 Windows 스토어 앱에서 Visual C++, Visual C# 및 Visual Basic 코드를 프로파일링하는 방법
항목 내용
이 항목에는 다음과 같은 단원이 포함되어 있습니다.
성능 데이터 형식
내 코드만
성능 보고서 뷰 형식
성능 보고서 뷰
요약 뷰
함수 정보 뷰
호출 트리 뷰
호출자/호출 수신자 뷰
모듈 및 함수 뷰
줄 뷰
데이터 표 뷰 사용자 지정
프로파일링 보고서 파일 열기
Visual Studio IDE에서 프로파일링 실행을 중지하면 문서에 성능 데이터가 자동으로 표시됩니다.
VSPerf 명령줄 도구를 통해 생성되었거나 이전 프로파일링 실행 후 저장된 프로파일링 보고서 파일(.vspx)을 열려면 다음을 수행합니다.
필요한 경우 Visual Studio를 엽니다.
파일 메뉴에서 파일 열기를 선택합니다.
파일 열기 대화 상자에서 프로파일링 보고서 파일이 있는 폴더로 이동한 다음 보고서 파일을 선택합니다.
성능 데이터 형식
Visual Studio Express 2012 for Windows 8 프로파일러는 샘플링 기술을 사용하여 Visual C++, Visual C# 및 Visual Basic 코드에 대한 성능 데이터를 수집합니다. 프로파일러는 프로세서 클록을 기반으로 하는 간격에 따라 현재 활성 함수의 스냅숏(호출 스택)을 캡처합니다. 호출 스택에 있는 활성 함수는 함수 고유의 코드를 실행하고 있거나, 호출한 함수가 실행될 때까지 기다리고 있습니다. 프로파일러는 샘플링된 호출 스택의 각 함수에 다음과 같이 샘플링 값을 할당합니다.
함수가 자식 함수에 있지 않고 고유 본문에 있는 코드를 실행 중인 경우 함수의 포괄 및 전용 샘플 수가 증가합니다.
함수에서 자식 함수가 반환될 때까지 기다리고 있는 경우 함수의 포함 샘플 수만 증가합니다.
함수에 대한 프로파일링 데이터에는 함수에 대해 수집된 샘플의 절대 수 및 프로파일링 실행 시 수집된 총 샘플 수와 비교되는 해당 샘플의 상대 백분율이 포함됩니다. 데이터는 다음과 같은 두 가지 타이밍 값 집합에 대해 계산됩니다.
포함 값은 자식 함수가 실행되고 있는 경우 수집되는 샘플을 포함하여 호출 스택에 있는 함수에 대해 수집된 총 샘플 수에서 계산됩니다. 샘플링된 호출 스택이 분석되는 경우 호출 스택에 있는 모든 함수의 포괄 샘플 수가 증가합니다.
전용 값은 함수 고유의 코드를 실행 중인 함수에 대해 수집된 총 샘플 수에서 계산됩니다. 자식 함수가 실행되고 있는 경우 수집되는 샘플은 전용 값에 포함되지 않습니다. 샘플링된 호출 스택이 분석되는 경우 함수 본문의 코드를 실행 중인 함수에 대해서만 전용 샘플 수가 증가합니다.
성능 보고서 뷰 형식
프로파일링 보고서 뷰에는 다음과 같은 두 가지 방식으로 데이터가 표시됩니다.
호출 그래프 뷰에서는 실행 경로의 컨텍스트에서 함수에 대한 정보를 보여 줍니다.
요약 창의 실행 부하 과다 경로 트리에서는 프로파일링 실행 시 가장 시간이 오래 걸리는 가장 많은 수의 샘플에 대한 실행 경로를 보여 줍니다.
호출 트리 뷰는 프로파일링 실행 시 샘플링된 모든 실행 경로에 대한 호출 그래프입니다.
함수 정보 및 호출자/호출 수신자 뷰는 선택한 함수에 초점을 맞춰, 선택한 함수를 호출한 함수와 해당 함수가 호출한 함수를 표시합니다.
호출 그래프 뷰를 사용하면 알고리즘에서 성능 문제를 찾을 수 있습니다.
함수 목록 뷰에는 테이블의 함수에 대한 데이터 성능 데이터가 표시됩니다. 데이터 열을 선택하여 함수를 정렬할 수 있습니다.
요약 페이지의 개별 작업이 가장 많은 함수 목록에서는 프로파일링 실행 시 수집된 가장 많은 수의 전용 샘플이 있는 함수를 보여 줍니다.
모듈 뷰는 함수가 포함된 .dll 또는 .exe 파일별로 함수를 그룹화합니다.
함수 뷰는 함수의 단일 목록입니다.
줄 뷰에는 샘플이 수집될 때 실행 중이던 함수 문에 대한 성능 데이터가 표시됩니다.
함수를 선택하고 현재 뷰 드롭다운 목록에서 새 뷰를 선택하여 뷰 간에 탐색할 수 있습니다.
내 코드만
기본적으로 프로파일러는 보고서를 만들 때 내 코드만 기능을 사용합니다. 프로파일러는 호출 스택 정보를 분석할 때 호출 스택의 함수가 .NET 기본 클래스 라이브러리의 메서드와 같은 시스템 코드의 멤버인지 코드의 멤버인지 확인합니다. 내 코드만을 사용하도록 설정되어 있고 함수가 시스템 코드에 대한 호출인 경우 프로파일러 분석을 수행하면 호출 스택에 대해 수집된 모든 후속 샘플이 첫 번째 시스템 호출의 전용 및 포괄 값에 추가됩니다. 따라서 시스템 호출이 첫 번째 시스템 호출로 롤업되므로 사용자 고유의 코드 최적화에 집중할 수 있습니다.
기본 내 코드만 동작을 변경하고 시스템 호출에 대한 모든 호출을 보려면 다음을 수행합니다.
도구 메뉴에서 옵션을 선택합니다.
옵션 대화 상자에서 성능 도구를 선택한 다음 일반을 선택합니다.
내 코드만 그룹에서 프로파일러 보고서에 [내 코드만] 사용(샘플링) 확인란의 선택을 취소합니다.
성능 보고서 뷰
요약 뷰
요약 페이지에서는 성능 최적화를 위한 가장 적합한 후보를 파악하는 데 유용한 두 가지 프로파일링 데이터 뷰를 제공합니다.
실행 부하 과다 경로 트리에서는 프로파일링 실행 시 가장 많은 샘플이 있는 호출 스택을 보여 줍니다. 이 알고리즘에 시간이 너무 오래 걸리는 이유를 파악하면 최적화에 도움이 됩니다.
개별 작업이 가장 많은 함수 목록에는 전용 시간을 가장 많이 사용한 10개의 함수가 표시됩니다. 함수 코드를 최적화하거나 이러한 함수가 호출되는 횟수를 줄여 성능을 크게 향상시킬 수 있습니다.
함수에 대한 함수 정보 뷰를 열려면 요약 뷰에서 함수 이름을 선택합니다.
함수 정보 뷰
비용 분산 가로 막대형 차트는 선택한 함수와 선택한 함수를 실행한 호출 함수의 관계 및 선택한 함수와 해당 함수에 의해 호출된 함수의 관계를 나타냅니다.
호출 함수 막대에는 선택한 함수를 호출한 함수가 표시됩니다. 호출 함수 블록의 크기는 호출 함수에 의해 발생한 선택한 함수의 총 실행 시간에 대한 백분율을 나타냅니다.
선택한 함수 막대는 선택한 함수가 해당 함수 고유의 코드(함수 본문 블록)를 실행하는 데 걸린 총 실행 시간의 상대적인 크기와 선택한 함수에서 호출한 함수를 실행하는 데 걸린 시간을 나타냅니다.
호출된 함수 막대에는 선택한 함수에서 호출한 함수가 표시됩니다. 호출된 함수 블록의 크기는 호출된 함수에서 소요된 호출된 함수의 총 실행 시간에 대한 백분율을 나타냅니다.
호출 함수 또는 호출된 함수를 선택하여 해당 함수가 선택한 함수가 되도록 할 수 있습니다.
호출 트리 뷰
호출 트리 뷰를 사용하여 응용 프로그램에서 이동한 함수 실행 경로를 탐색할 수 있습니다. 트리의 루트는 응용 프로그램에 대한 진입점입니다. 각 함수 노드에는 호출한 모든 함수 및 이러한 함수 호출에 대한 성능 데이터가 나열됩니다. 호출 트리 뷰의 함수 값은 호출 트리의 부모 함수가 호출한 함수 인스턴스에 대한 값입니다. 백분율 값은 프로파일링 실행의 총 실행 시간에 대한 함수 인스턴스 시간의 비율입니다.
호출 트리 뷰의 한 노드에 초점을 맞추려면 노드를 선택한 다음 바로 가기 메뉴에서 루트 설정을 선택합니다. 루트 노드를 설정하면 선택한 노드의 하위 트리를 제외한 다른 모든 항목이 뷰에서 제거됩니다. 루트 노드를 원래 노드로 다시 설정하려면 바로 가기 메뉴에서 루트 다시 설정을 선택합니다.
호출 트리 뷰 열
열 이름 |
설명 |
---|---|
포괄 샘플 |
호출 트리의 부모 함수가 호출한 함수의 인스턴스에 대해 수집된 샘플 수입니다. 샘플 수에는 해당 함수가 호출한 함수에 대해 수집된 샘플이 포함됩니다. |
전용 샘플 |
호출 트리의 부모 함수가 호출한 함수의 인스턴스에 대해 수집된 샘플 수입니다. 샘플 수에는 해당 함수가 호출한 함수에 대해 수집된 샘플은 포함되지 않습니다. |
포괄 샘플 비율(%) |
프로파일링 실행 시 부모 함수가 호출한 함수의 인스턴스에 대해 수집된 총 샘플 수에 대한 백분율입니다. 이 값에는 해당 함수가 호출한 함수에 대해 수집된 샘플이 포함됩니다. |
전용 샘플 비율(%) |
프로파일링 실행 시 부모 함수가 호출한 함수의 인스턴스에 대해 수집된 총 샘플 수에 대한 백분율입니다. 이 값에는 해당 함수가 호출한 함수에 대해 수집된 샘플은 포함되지 않습니다. |
모듈 이름 |
함수가 포함된 모듈(.dll 또는 .exe)의 이름입니다. |
호출자/호출 수신자 뷰
호출자/호출 수신지 뷰는 모든 타이밍 정보가 포함된 함수 정보 비용 분산 가로 막대형 차트의 데이터에 대한 트리 표현입니다. 호출자/호출 수신자 뷰를 사용하여 선택한 함수와 해당 함수를 호출한 함수 및 해당 함수가 호출한 함수와의 관계를 조사할 수 있습니다. 호출자/호출 수신자 뷰는 세 개의 표로 구성됩니다.
가운데 표에 나타나는 현재 함수에는 선택한 함수에 대한 프로파일링 정보가 표시됩니다. 값에는 해당 함수에 대한 모든 호출의 샘플이 포함됩니다. 현재 함수를 호출한 함수는 위쪽 표에 표시되고 현재 함수에서 호출된 함수는 아래쪽 표에 표시됩니다. 현재 함수 값은 함수에 대한 샘플링된 모든 호출의 합계입니다. 호출 함수 및 호출된 함수 값에는 해당 함수가 선택한 함수를 호출하거나 선택한 함수에 의해 호출될 때 해당 함수에 대해 수집된 샘플만 포함됩니다.
함수의 호출 트리를 탐색하려면 호출 함수 또는 호출된 함수를 두 번 클릭합니다. 그러면 선택한 함수가 새로운 선택한 함수가 되고 호출자 및 호출된 함수가 표시됩니다.
호출자/호출 수신자 뷰 열
열 이름 |
설명 |
---|---|
포괄 샘플 |
|
전용 샘플 |
|
포괄 샘플 비율(%) |
|
전용 샘플 비율(%) |
|
모듈 및 함수 뷰
모듈 및 함수 뷰에는 프로파일링 보고서의 함수에 대한 프로파일링 데이터의 세부 정보가 표시됩니다. 모듈 뷰는 JavaScript 함수가 포함된 .js 소스 파일별로 JavaScript 함수를 구성합니다. 다른 함수는 .dll과 같은 모듈별로 나열됩니다. 함수 뷰에는 계층 구조를 사용하지 않고 모든 함수가 나열됩니다. 함수 뷰보다 모듈 뷰에서 사용자 고유의 코드를 찾는 것이 쉽지만 함수 뷰에서 함수를 비교하기가 더 쉽습니다.
모듈 및 함수 뷰 열
열 이름 |
설명 |
---|---|
포괄 샘플 |
함수가 호출 스택에 있을 때 수집된 샘플 수입니다. 샘플 수에는 해당 함수가 호출한 함수에 대해 수집된 샘플이 포함됩니다. |
전용 샘플 |
함수가 해당 함수 고유의 코드를 실행할 때 수집된 샘플 수입니다. 전용 샘플에는 함수에 의해 호출된 함수를 실행할 때 수집된 샘플은 포함되지 않습니다. |
포괄 샘플 비율(%) |
프로파일링 실행 시 해당 함수가 호출 스택에 있을 때 수집된 총 샘플 수에 대한 백분율입니다. 분자는 함수의 포괄 샘플입니다. 분모는 프로파일링 실행에 대해 수집된 총 샘플 수입니다. |
전용 샘플 비율(%) |
프로파일링 실행 시 해당 함수에 대해 수집된 총 샘플 수에 대한 백분율입니다. 이 값에는 해당 함수가 호출한 함수에 대해 수집된 샘플은 포함되지 않습니다. |
줄 뷰
샘플링 데이터의 줄 뷰에는 프로파일링 실행 시 샘플이 수집될 때 실행되고 있던 문에 대한 성능 데이터가 표시됩니다. 소스 파일에서는 하나의 문이 소스 파일의 여러 줄에 걸쳐 있거나 한 줄에 여러 문이 포함될 수 있습니다.
열 이름 |
설명 |
---|---|
포괄 샘플 |
프로파일링 실행 시 해당 줄에 대해 수집된 샘플 수입니다. 샘플 수에는 해당 줄에서 호출한 함수에 대해 수집된 샘플이 포함됩니다. |
전용 샘플 |
프로파일링 실행 시 해당 줄에 대해 수집된 샘플 수입니다. 샘플 수에는 해당 줄에서 호출한 함수에 대해 수집된 샘플은 포함되지 않습니다. |
포괄 샘플 비율(%) |
프로파일링 실행 시 해당 줄에 대해 수집된 총 샘플 수에 대한 백분율입니다. 이 값에는 해당 줄에서 호출한 함수에 대해 수집된 샘플이 포함됩니다. |
전용 샘플 비율(%) |
프로파일링 실행 시 해당 줄에 대해 수집된 총 샘플 수에 대한 백분율입니다. 이 값에는 해당 줄에서 호출한 함수에 대해 수집된 샘플은 포함되지 않습니다. |
소스 줄 시작 |
소스 파일에서 이 샘플이 수집된 시작 줄 번호입니다. |
소스 문자 시작 |
소스 파일 줄에서 이 샘플이 수집된 시작 문자의 오프셋입니다. |
소스 줄 끝 |
소스 파일에서 이 샘플이 수집된 끝 줄 번호입니다. |
소스 문자 끝 |
소스 파일 줄에서 이 샘플이 수집된 끝 문자의 오프셋입니다. |
데이터 표 뷰 사용자 지정
데이터 열을 추가하거나 제거하고 열이 표시되는 순서를 변경할 수 있습니다. 테이블 머리글 행에 대한 바로 가기 메뉴를 열고 열 추가/제거를 선택합니다. 표시할 열의 확인란은 선택하고 숨길 열의 확인란은 선택 취소합니다. 화살표 단추를 사용하여 선택한 열을 이동할 수 있습니다.
추가 프로파일링 데이터 열
열 이름 |
설명 |
---|---|
함수 주소 |
함수의 메모리 주소입니다. |
함수 줄 번호 |
소스 파일에서 이 함수가 시작되는 줄 번호입니다. |
소스 파일 |
이 함수의 정의가 포함된 소스 파일입니다. |
모듈 이름 |
함수가 포함된 모듈의 이름입니다. |
모듈 경로 |
함수가 포함된 모듈의 경로입니다. |
프로세스 ID |
프로파일링 실행의 PID(프로세스 ID)입니다. |
프로세스 이름 |
프로세스의 이름입니다. |