스토어 앱의 UI 응답성 분석(XAML)
스토어 앱용 XAML UI 응답성 프로파일러를 사용하여 XAML 처리 및 렌더링 관련 성능 문제를 찾아 해결합니다. 이 도구를 사용하여 시작 및 탐색에 소요되는 오랜 시간, 균일하지 않은 이동 및 스크롤 및 사용자 입력 처리 시 지연과 같은 문제를 분석할 수 있습니다.
참고
XAML UI 응답성 데이터와 함께 CPU 사용 데이터 및 에너지 소비량 데이터를 수집하고 분석할 수 있습니다.성능 및 진단 페이지에서 분석 도구 실행을 참조하십시오.
내용
사용자 표시로 시나리오 식별
응용 프로그램에 대한 UI 응답성 데이터 수집
설치된 응용 프로그램에 대한 UI 응답성 데이터 수집
UI 응답성 데이터 분석
XAML 응답성 최적화
사용자 표시로 시나리오 식별
프로파일링 데이터에 사용자 표시를 추가하여 타임라인 눈금자의 영역을 식별할 수 있습니다.
이 표시는 메서드 실행 시 타임라인에 주황색 삼각형으로 표시됩니다. 표시 위로 마우스를 가져가면 메시지 및 시간이 도구 설명으로 표시됩니다. 두 개 이상의 사용자 표시가 서로 가까이 있으면 표시가 병합되고 도구 설명 데이터가 결합됩니다. 타임라인을 확대하면 표시가 분리되어 표시됩니다.
C#, Visual Basic, C++ 코드에 사용자 표시를 추가하려면 먼저 Windows.Foundation.Diagnostics LoggingChannel 개체를 만듭니다. 그런 다음 표시할 코드 지점에서 LoggingChannel.LogMessage 메서드에 호출을 삽입합니다. 호출에서 LoggingLevel.Information을 사용합니다.
메서드가 실행되면 메시지와 함께 프로파일링 데이터에 사용자 표시가 추가됩니다.
참고
-
Windows.Foundation.Diagnostics.LoggingChannel은 Windows.Foundation.IClosable 인터페이스를 구현합니다(C# 및 VB에서 System.IDisposable로 프로젝션됨). 운영 체제 리소스가 누수되지 않도록 하려면 로깅 채널이 완료될 때 Dispose()를 호출합니다.
-
열린 각 로깅 채널의 이름은 고유해야 합니다.삭제되지 않은 채널과 이름이 같은 새 로깅 채널을 만들려고 시도하면 예외가 발생합니다.
예제를 보려면 Windows SDK 샘플 LoggingSession 샘플을 참조하세요.
응용 프로그램에 대한 UI 응답성 데이터 수집
앱의 응답성 데이터는 Visual Studio 장치, Visual Studio 시뮬레이터, 에뮬레이터 또는 원격 장치에서 프로파일링할 수 있습니다. Visual Studio에서 스토어 앱 실행을 참조하십시오. 기본 단계는 다음과 같습니다.
디버거 표준 도구 모음의 디버깅 시작 단추 옆에 있는 드롭 다운 목록에서 응용 프로그램을 실행할 위치를 선택합니다.
Visual Studio 컴퓨터가 아닌 태블릿이나 PC에서 프로파일링할 때에는 원격 프로파일링용 프로젝트를 구성합니다. Visual Studio를 사용하여 원격 컴퓨터에서 Windows 스토어 앱 실행을 참조하십시오.
디버그 메뉴에서 성능 및 진단을 선택합니다.
XAML UI 응답성을 선택한 다음 시작을 선택합니다.
참고
XAML UI 응답성 프로파일러를 시작하면 VsEtwCollector.exe 실행 권한을 요청하는 사용자 계정 컨트롤 창이 표시될 수 있습니다.예를 선택합니다.
앱을 실행하여 데이터를 수집합니다.
팁
장치에서 직접 응용 프로그램을 실행합니다.시뮬레이터 또는 원격 데스크톱 연결을 통해 관찰된 응용 프로그램 성능으로는 장치에서의 실제 성능을 알 수 없습니다.
프로파일링을 중지하려면 Visual Studio로 다시 전환하고(Alt + Tab) 성능 및 진단 페이지에서 수집 중지를 선택합니다.
Visual Studio에서는 수집된 데이터를 분석하고 결과를 표시합니다.
설치된 응용 프로그램에 대한 UI 응답성 데이터 수집
XAML UI 응답성 프로파일러는 Visual Studio 솔루션에서 실행되거나 Windows 스토어에서 설치되는 Windows Store 8.1 응용 프로그램에서만 실행할 수 있습니다. 솔루션이 Visual Studio로 열려 있는 경우 기본 대상은 시작 프로젝트입니다. 솔루션을 열지 않고 로컬 또는 원격 장치에서 설치된 응용 프로그램에 대해 XAML 응답성을 프로파일링할 수 있습니다.
설치된 응용 프로그램의 대상을 지정하려면
대상 변경을 선택한 후 설치된 응용 프로그램을 선택합니다.
원격 프로파일링. 원격 장치에서 XAML 응답성 프로파일러를 실행하려면 장치에 Visual Studio 원격 도구가 설치 및 실행되어 있어야 합니다. Visual Studio를 사용하여 원격 컴퓨터에서 Windows 스토어 앱 실행을 참조하십시오.
설치된 응용 프로그램 패키지 선택 대화 상자에서 원격 컴퓨터를 선택한 후 원격 장치를 지정합니다.
현재 세션에 대해 설치된 응용 프로그램 패키지 목록에서 대상 응용 프로그램을 선택합니다.
성능 및 진단 페이지에서 XAML UI 응답성을 선택합니다.
시작을 선택하여 프로파일링을 시작합니다.
프로파일링을 중지하려면 Visual Studio로 다시 전환하고(Alt + Tab) 진단 허브 페이지에서 수집 중지를 선택합니다.
UI 응답성 데이터 분석
Diagnostic session timeline**|UI Thread utilization|Visual throughput (FPS)|Parsing view|**Hot Elements view
프로파일링 데이터를 수집한 후에는 다음 단계를 통해 분석을 시작할 수 있습니다.
UI 스레드 사용률 및 시각적 처리량(FPS) 그래프의 정보를 검사한 다음 타임라인 탐색 모음을 사용하여 분석하려는 시간 범위를 선택합니다.
UI 스레드 사용률 또는 시각적 처리량(FPS) 그래프의 정보를 사용하고 구문 분석 또는 실행 부하 과다 요소 뷰의 자세한 정보를 검사하여 부족한 응답성에 대한 가능한 원인을 검색합니다.
진단 세션 타임라인
성능 및 진단 페이지의 위쪽에 있는 눈금자는 프로파일링된 정보의 타임라인을 보여줍니다. 타임라인은 UI 스레드 사용률 그래프와 시각적 처리량 그래프 모두에 적용됩니다. 타임라인의 탐색 모음을 끌어 보고서의 범위를 좁혀서 타임라인의 세그먼트를 선택할 수 있습니다.
타임라인에는 또한 사용자가 삽입한 사용자 표시 및 응용 프로그램의 활성화 수명 주기 이벤트가 표시됩니다.
UI 스레드 사용률
UI 스레드 사용률(%) 그래프에는 다음과 같은 범주에 대해 UI 스레드에서 소비된 상대적인 시간이 표시됩니다.
구문 분석 |
XAML을 구문 분석하고 앱 리소스를 검색하는 UI 스레드에서 소요된 시간을 나타냅니다. |
레이아웃 |
XAML 요소를 레이아웃하는 UI 스레드에서 소요된 시간을 나타냅니다. |
앱 코드 |
구문 분석 또는 레이아웃과 관련이 없는 UI 스레드 실행 응용 프로그램(사용자) 코드에 소비된 시간을 나타냅니다. |
Xaml(기타) |
XAML 런타임 코드를 실행하는 UI 스레드에서 소요된 시간을 나타냅니다. |
시각적 처리량(FPS)
시각적 처리량(FPS) 선 그래프는 응용 프로그램에 대한 UI 및 컴퍼지션 스레드의 초당 프레임 수(FPS)를 보여 줍니다. 값은 EnableFrameRateCounter를 사용할 경우 응용 프로그램의 크롬에 표시되는 값과 동일합니다.
구문 분석 뷰
구문 분석 뷰에는 선택한 타임라인 부분에서 로드되고 처리되는 XAML 파일의 가로 막대형 차트가 있습니다. XAML 파일 노드의 자식은 노드 파일에서 포함되는 파일입니다. 노드는 로드된 순서로 나열됩니다. 상세 창에서는 선택한 파일의 값을 표시합니다.
포괄 시간 및 전용 시간 값
전용 시간 |
이 노드에서 명시적으로 정의된 요소를 처리하는 데 걸린 시간입니다. |
포괄 시간 |
이 노드 및 모든 자식 노드에 정의된 요소를 처리하는 데 걸린 시간입니다. |
UI 요소(전용) |
이 노드에서 명시적으로 정의된 요소의 수입니다. |
UI 요소(포괄) |
이 노드 및 모든 자식 노드에서 명시적으로 정의된 요소의 수입니다. |
실행 부하 과다 요소 뷰
실행 부하 과다 요소 뷰에는 타임라인에서 선택한 부분 동안 레이아웃에 관여하는 모든 개체를 나타내는 가로 막대형 그래프가 있습니다. 요소는 관련 템플릿으로 그룹화되고 레이아웃에 소요된 시간의 내림차순으로 정렬됩니다.
요소 노드의 자식은 부모 노드의 요소에서 포함하는 요소입니다. 자식 노드도 레이아웃 시간별로 정렬됩니다. 상세 뷰는 선택한 요소의 이름과 타이밍 값을 표시합니다.
XAML 응답성 최적화
앱 성능 최적화와 관련된 최상의 정보를 찾아 볼 수 있는 곳 중 하나가 Performance best practices for Windows Store apps using C++, C#, and Visual Basic입니다.
XAML 성능을 최적화할 수 있는 몇 가지 방법은 다음과 같습니다.
시작 및 페이지 탐색 최적화
XAML, 리소스 및 페이지가 로드하는 데이터 파일을 면밀히 검사하여 응용 프로그램의 시작 및 페이지 탐색 속도를 높일 수 있습니다. XAML 파일에서 페이지를 처음 로드할 때 필요하지 않는 수많은 UI 요소를 만들거나 참조하는 경우, 현재 페이지에 해당하지 않는 템플릿과 스타일을 참조하는 리소스 파일이 로드되는 경우 또는 동일한 XAML 또는 리소스 파일이 두 번 이상 로드되는 경우 앱이 느리게 나타날 수 있습니다. 이러한 문제를 해결하기 위한 기술은 다음 항목 중 하나를 참조하십시오.
Optimize loading XAML (Windows Store apps using C#/VB/C++ and XAML)
Minimize startup time (Windows Store apps using C#/VB/C++ and XAML)
Access the file system efficiently (Windows Store apps using C#/VB/C++ and XAML)
이동 및 스크롤 최적화
이동 및 스크롤 성능 문제는 가상화 컨테이너를 사용하지 않거나 크고 복잡한 템플릿 또는 사용자 지정 프레임별 콜백 메서드의 비효율적인 알고리즘을 사용할 때 발생할 수 있습니다. 이러한 문제를 해결하기 위한 기술은 다음 항목 중 하나를 참조하십시오.
입력 응답성 최적화
이러한 문제를 해결하기 위한 기술은 Keep the UI thread responsive (Windows Store apps using C#/VB/C++ and XAML)를 참조하십시오.