스토어 앱에서 JavaScript 함수 타이밍 데이터 분석
이 항목에서는 성능 및 진단 허브에서 JavaScript 함수 타이밍 도구의 보고서 뷰에 나타나는 JavaScript 코드에 대한 성능 데이터에 대해 설명합니다. JavaScript 함수 타이밍 데이터를 수집하려면 다음 항목 중 하나를 참조하세요.
항목 내용
프로파일링 보고서 파일 열기
프로파일링 데이터 형식
프로파일링 보고서 뷰 형식
프로파일링 보고서 뷰
요약 뷰
함수 정보 뷰
호출 트리 뷰
호출자/호출 수신자 뷰
모듈 및 함수 뷰
데이터 표 뷰 사용자 지정
프로파일링 보고서 파일 열기
Visual Studio IDE에서 프로파일링 실행을 중지하면 문서에 성능 데이터가 자동으로 표시됩니다.
VSPerf 명령줄 도구를 통해 생성되었거나 이전 프로파일링 실행 후 저장된 프로파일링 보고서 파일(.vspx)을 열려면 다음을 수행합니다.
필요한 경우 Visual Studio를 엽니다.
파일 메뉴에서 파일 열기를 선택합니다.
파일 열기 대화 상자에서 프로파일링 보고서 파일이 있는 폴더로 이동한 다음 보고서 파일을 선택합니다.
프로파일링 데이터 형식
함수에 대한 프로파일링 데이터에는 전체, 평균, 최소 및 최대 시간과 백분율이 포함됩니다. 데이터는 다음과 같은 두 가지 타이밍 값 집합에 대해 계산됩니다.
경과된 포괄 값은 함수가 실행되는 데 걸린 총 시간입니다.
경과된 전용 값은 함수의 고유 코드가 실행되는 데 소요된 총 시간입니다. 자식 함수에서 소요된 시간은 이 값에 포함되지 않습니다.
프로파일링 보고서 뷰 형식
프로파일링 보고서 뷰에는 다음과 같은 두 가지 방식으로 데이터가 표시됩니다.
호출 그래프 뷰에서는 실행 경로의 컨텍스트에서 함수에 대한 정보를 보여 줍니다. 요약 창의 실행 부하 과다 경로 트리는 프로파일링 실행 중에 응용 프로그램이 가장 많은 시간을 누적하여 소모한 실행 경로를 보여 줍니다. 호출 트리 뷰는 프로파일링 실행 시 모든 함수에 대한 호출 그래프입니다. 함수 정보 및 호출자/호출 수신자 뷰는 선택한 함수에 초점을 맞춰, 선택한 함수를 호출한 함수와 해당 함수가 호출한 함수를 표시합니다. 호출 그래프 뷰를 사용하면 알고리즘에서 성능 문제를 찾을 수 있습니다.
함수 목록 뷰는 선택한 데이터 열을 기준으로 함수를 정렬하고 나열합니다. 요약 페이지의 개별 작업이 가장 많은 함수 목록은 함수가 자식 함수를 호출하는 데 걸린 시간을 제외하고, 함수의 고유 코드를 실행하는 데 가장 많은 시간을 소요한 함수를 보여 줍니다. 모듈 뷰는 JavaScript 코드의 소스 파일 및 다른 언어의 모듈을 기준으로 함수를 그룹화합니다. 함수 뷰는 함수의 단일 목록입니다.
프로파일링 보고서 뷰
요약 뷰
요약 페이지에서는 성능 최적화를 위한 가장 적합한 후보를 파악하는 데 유용한 두 가지 프로파일링 데이터 뷰를 제공합니다.
실행 부하 과다 경로 트리는 프로파일링 실행 중에 응용 프로그램이 가장 많은 시간을 누적하여 소모한 호출 스택을 보여 줍니다. 이 알고리즘에 시간이 너무 오래 걸리는 이유를 파악하면 최적화에 도움이 됩니다.
개별 작업이 가장 많은 함수 목록에는 전용 시간을 가장 많이 사용한 10개의 함수가 표시됩니다. 함수 코드를 최적화하거나 이러한 함수가 호출되는 횟수를 줄여 성능을 크게 향상시킬 수 있습니다.
함수 정보 뷰
비용 분산 가로 막대형 차트는 선택한 함수와 선택한 함수를 실행한 호출 함수의 관계 및 선택한 함수와 해당 함수에 의해 호출된 함수의 관계를 나타냅니다.
호출 함수 막대에는 선택한 함수를 호출한 함수가 표시됩니다. 호출 함수 블록의 크기는 호출 함수에 의해 발생한 선택한 함수의 총 실행 시간에 대한 백분율을 나타냅니다.
선택한 함수 막대는 선택한 함수가 해당 함수 고유의 코드(함수 본문 블록)를 실행하는 데 걸린 총 실행 시간의 상대적인 크기와 선택한 함수에서 호출한 함수를 실행하는 데 걸린 시간을 나타냅니다.
호출된 함수 막대에는 선택한 함수에서 호출한 함수가 표시됩니다. 호출된 함수 블록의 크기는 호출된 함수에서 소요된 호출된 함수의 총 실행 시간에 대한 백분율을 나타냅니다.
호출 트리 뷰
호출 트리 뷰를 사용하여 응용 프로그램에서 이동한 함수 실행 경로를 탐색할 수 있습니다. 트리의 루트는 응용 프로그램에 대한 진입점입니다. 각 함수 노드에는 호출한 모든 함수 및 이러한 함수 호출에 대한 성능 데이터가 나열됩니다. 호출 트리 뷰의 함수 값은 호출 트리의 부모 함수가 호출한 함수 인스턴스에 대한 값입니다. 백분율 값은 프로파일링 실행의 총 실행 시간에 대한 함수 인스턴스 시간의 비율입니다.
호출 트리 뷰의 한 노드에 초점을 맞추려면 노드를 선택한 다음 바로 가기 메뉴에서 루트 설정을 선택합니다. 루트 노드를 설정하면 선택한 노드의 하위 트리를 제외한 다른 모든 항목이 뷰에서 제거됩니다. 루트 노드를 원래 노드로 다시 설정하려면 바로 가기 메뉴에서 루트 다시 설정을 선택합니다.
호출 트리 뷰 열
열 이름 |
설명 |
---|---|
호출 수 |
호출 트리에서 부모 함수에 의한 함수 호출 수입니다. |
경과된 포괄 시간 % |
이 함수를 실행하는 데 소요된 실행 시간에 대한 총 백분율입니다. |
경과된 전용 시간 % |
함수의 본문을 실행하는 데 소요된 실행 시간에 대한 총 백분율입니다. 함수가 호출한 함수에서 소요된 시간은 이 값에서 제외됩니다. |
경과된 평균 포괄 시간 |
이 함수를 실행하는 데 소요된 평균 시간입니다. |
경과된 평균 전용 시간 |
이 함수를 실행하는 데 소요된 평균 시간입니다. 함수가 호출한 함수에서 소요된 시간은 이 값에서 제외됩니다. |
모듈 이름 |
JavaScript 함수의 경우 해당 함수가 포함된 소스 파일의 이름입니다. 그렇지 않으면 함수가 포함된 모듈(.dll 또는 .exe)의 이름입니다. |
호출자/호출 수신자 뷰
호출자/호출 수신자 뷰는 모든 타이밍 정보가 포함된 요약 뷰의 함수 정보 비용 분산 가로 막대형 차트의 데이터에 대한 트리 표현입니다. 호출자/호출 수신자 뷰를 사용하여 선택한 함수와 해당 함수를 호출한 함수 및 해당 함수가 호출한 함수와의 관계를 조사할 수 있습니다. 호출자/호출 수신자 뷰는 세 개의 표로 구성됩니다.
가운데 표에 나타나는 현재 함수에는 선택한 함수에 대한 프로파일링 정보가 표시됩니다. 값에는 해당 함수에 대한 모든 호출이 포함됩니다. 현재 함수를 호출한 함수는 위쪽 표에 표시되고 현재 함수에서 호출된 함수는 아래쪽 표에 표시됩니다. 현재 함수 값은 함수에 대한 모든 호출의 합계입니다. 호출 함수 및 호출된 함수 값에는 선택한 함수를 호출하거나 선택한 함수에 의해 호출되는 데 소요된 시간만 포함됩니다.
함수의 호출 트리를 탐색하려면 호출 함수 또는 호출된 함수를 두 번 클릭합니다. 두 번 클릭된 함수는 새로 선택된 함수가 됩니다. 이제 해당 함수의 호출자와 호출된 함수가 표시됩니다.
호출자/호출 수신자 뷰 열
열 이름 |
설명 |
---|---|
호출 수 |
|
경과된 포괄 시간 % |
|
경과된 전용 시간 % |
|
경과된 평균 포괄 시간 |
|
경과된 평균 전용 시간 |
|
모듈 이름 |
JavaScript 함수의 경우 해당 함수가 포함된 소스 파일의 이름입니다. 그렇지 않으면 함수가 포함된 모듈(.dll 또는 .exe)의 이름입니다. |
모듈 및 함수 뷰
모듈 및 함수 뷰에는 프로파일링 보고서의 함수에 대한 프로파일링 데이터의 세부 정보가 표시됩니다. 모듈 뷰는 JavaScript 함수가 포함된 .js 소스 파일별로 JavaScript 함수를 구성합니다. 다른 함수는 .dll과 같은 모듈별로 나열됩니다. 함수 뷰에는 계층 구조를 사용하지 않고 모든 함수가 나열됩니다. 함수 뷰보다 모듈 뷰에서 사용자 고유의 코드를 찾는 것이 쉽지만 함수 뷰에서 함수를 비교하기가 더 쉽습니다.
모듈 및 함수 뷰 열
열 이름 |
설명 |
---|---|
호출 수 |
함수에 대한 호출 수입니다. |
경과된 포괄 시간 % |
프로파일링 실행 시 함수를 실행하는 데 소요된 총 실행 시간에 대한 백분율입니다. |
경과된 전용 시간 % |
함수를 실행하는 데 소요된 총 실행 시간에 대한 백분율입니다. 함수가 호출한 함수에서 소요된 시간은 이 값에서 제외됩니다. |
경과된 평균 포괄 시간 |
함수의 평균 실행 시간입니다. |
경과된 평균 전용 시간 |
함수의 평균 실행 시간입니다. 함수가 호출한 함수에서 소요된 시간은 이 값에서 제외됩니다. |
모듈 이름 |
JavaScript 함수의 경우 해당 함수가 포함된 소스 파일의 이름입니다. 그렇지 않으면 함수가 포함된 모듈(.dll 또는 .exe)의 이름입니다. |
데이터 표 뷰 사용자 지정
데이터 열을 추가하거나 제거하고 열이 표시되는 순서를 변경할 수 있습니다. 데이터 행을 마우스 오른쪽 단추로 클릭하고 열 추가/제거를 선택합니다.
참고
관리 코드 및 네이티브 코드에 계측 방법을 사용하면 코드 실행에 대한 추가 정보가 수집되고 응용 프로그램 포괄 및 응용 프로그램 전용 타이밍 필드에 표시됩니다.이 정보는 JavaScript에서 사용할 수 없으므로 응용 프로그램 값은 경과 값과 동일합니다.이러한 필드는 뷰에 추가하지 않는 것이 좋습니다.
추가 프로파일링 데이터 열
열 이름 |
설명 |
---|---|
함수 이름 |
함수의 이름입니다. |
함수 주소 |
함수의 주소입니다. |
함수 줄 번호 |
소스 파일에서 이 함수가 시작되는 줄 번호입니다. |
호출 수 |
이 함수에 대한 총 호출 수입니다. |
소스 파일 |
이 함수의 정의가 포함된 소스 파일입니다. |
모듈 이름 |
함수가 포함된 모듈의 이름입니다. |
모듈 경로 |
함수가 포함된 모듈의 경로입니다. |
프로세스 ID |
프로파일링 실행의 PID(프로세스 ID)입니다. |
프로세스 이름 |
프로세스의 이름입니다. |
시간 제외 프로브 오버헤드 |
계측으로 인한 이 함수의 시간 오버헤드입니다. 여기에는 해당 함수에 의해 호출된 함수의 오버헤드가 포함되지 않습니다. 모든 전용 시간에서 프로브 오버헤드를 뺀 값입니다. |
시간 포괄 프로브 오버헤드 |
계측으로 인한 이 함수와 해당 자식 함수의 시간 오버헤드입니다. 여기에는 해당 함수에 의해 호출된 함수의 오버헤드가 포함됩니다. 모든 포괄 시간에서 프로브 오버헤드를 뺀 값입니다. |
경과된 전용 시간 |
이 함수에 대한 모든 호출의 총 경과된 전용 시간입니다. |
경과된 최대 전용 시간 |
이 함수 호출의 최대 경과된 전용 시간입니다. |
경과된 최소 전용 시간 |
이 함수 호출의 최소 경과된 전용 시간입니다. |
경과된 포괄 시간 |
이 함수에 대한 모든 호출의 총 경과된 포괄 시간입니다. |
경과된 최대 포괄 시간 |
이 함수 호출의 최대 경과된 포괄 시간입니다. |
경과된 최소 포괄 시간 |
이 함수 호출의 최소 경과된 포괄 시간입니다. |