다음을 통해 공유


리소스 사용량 및 UI 스레드 작업 분석(XAML)

애플리케이션 타임라인 프로파일러를 사용하여 XAML 애플리케이션에서 애플리케이션 상호 작용 관련 성능 문제를 찾고 해결합니다. 이 도구는 애플리케이션의 리소스 사용량에 대한 자세한 보기를 표시하여 XAML 애플리케이션 성능을 개선하는 데 도움이 됩니다. 애플리케이션에서 UI 프레임(레이아웃 및 렌더링) 준비, 네트워크 및 디스크 요청 처리, 애플리케이션 시작, 페이지 로드 및 윈도우 크기 조정과 같은 시나리오에서 소요된 시간을 분석할 수 있습니다.

애플리케이션 타임라인디버그>성능 프로파일러 명령으로 시작할 수 있는 도구 중 하나입니다.

이 도구는 이전 버전의 Visual Studio에서 진단 도구 집합의 일부였던 XAML UI 응답성 도구를 대체합니다.

다음 플랫폼에서 이 도구를 사용할 수 있습니다.

  • 유니버설 Windows 앱(Windows 10 이상)
  • Windows 8.1
  • Windows Presentation Foundation(.NET 4.0 이상)
  • Windows 7

메모

ApplicationTimeline 데이터와 함께 CPU 사용량 현황 데이터 및 에너지 소비량 데이터를 수집하고 분석할 수 있습니다. 릴리스 또는 디버그 빌드에서 프로파일링 도구 실행을 참조하세요 .

애플리케이션 타임라인 데이터 수집

로컬 컴퓨터, 연결된 디바이스, Visual Studio 시뮬레이터 또는 에뮬레이터 또는 원격 디바이스에서 앱의 응답성을 프로파일할 수 있습니다. 릴리스 또는 디버그 빌드에 프로파일링 도구 실행을 참조하세요.

가능하면 디바이스에서 직접 앱을 실행합니다. 시뮬레이터 또는 원격 데스크톱 연결을 통해 관찰되는 애플리케이션 성능은 디바이스의 실제 성능과 다를 수 있습니다. 반면에 Visual Studio 원격 도구를 사용하여 데이터를 수집하는 것은 성능 데이터에 영향을 주지 않습니다.

기본 단계는 다음과 같습니다.

  1. XAML 앱을 엽니다.

  2. 디버그/성능 프로파일러를 클릭하세요. .diagsession 창에 프로파일링 도구 목록이 표시됩니다.

  3. 애플리케이션 타임라인을 선택한 후, 창 아래쪽에서 시작을 클릭합니다.

    애플리케이션 타임라인 도구 선택

    메모

    VsEtwCollector.exe를 실행 허가를 요청하는 사용자 계정 컨트롤 창이 표시될 수 있습니다. 클릭합니다.

  4. 앱에서 프로파일링에 관심이 있는 시나리오를 실행하여 성능 데이터를 수집합니다.

  5. 프로파일링을 중지하려면 .diagsession 창으로 다시 전환하고 창 위쪽에서 중지 클릭합니다.

    Visual Studio는 수집된 데이터를 분석하고 결과를 표시합니다.

    타임라인 프로파일러 보고서

타임라인 프로파일링 데이터 분석

프로파일링 데이터를 수집한 후 다음 단계를 사용하여 분석을 시작할 수 있습니다.

  1. UI 스레드 사용률시각적 처리량(FPS) 그래프의 정보를 보고, 타임라인 탐색 막대를 사용하여 분석하려는 시간 범위를 선택합니다.

  2. UI 스레드 사용률 또는 FPS(시각적 처리량) 그래프의 정보를 사용하여 타임라인 세부 정보 보기의 세부 정보를 검토하여 응답성이 부족해 보이는 원인을 찾습니다.

보고서 시나리오, 범주 및 이벤트

애플리케이션 타임라인 도구는 XAML 성능과 관련된 시나리오, 범주 및 이벤트에 대한 타이밍 데이터를 표시합니다.

진단 세션 타임라인

성능 및 진단 타임라인

페이지 맨 위에 있는 눈금자에서 프로파일된 정보에 대한 타임라인을 표시합니다. 이 타임라인은 UI 스레드 사용률 그래프와 시각적 처리량 그래프 모두에 적용됩니다. 타임라인의 탐색 모음을 끌어서 타임라인의 세그먼트를 선택하여 보고서의 범위를 좁힐 수 있습니다.

타임라인에는 사용자가 삽입한 표시와 앱의 활성화 생명 주기 이벤트가 표시됩니다.

UI 스레드 사용률 그래프

CPU 사용률 그래프

UI 스레드 사용률(%) 그래프는 컬렉션 기간 동안 범주에 소요된 상대적 시간을 표시하는 세로 막대형 차트입니다.

FPS(시각적 처리량) 그래프

시각적 처리량 그래프

시각적 처리량(FPS) 선 그래프는 앱의 UI와 컴포지션 스레드에 대한 초당 프레임 수(FPS)를 보여 줍니다.

타임라인 세부 정보

세부 정보 보기는 보고서를 분석하는 데 대부분의 시간을 소비하는 위치입니다. UI Framework 하위 시스템 또는 CPU를 사용한 시스템 구성 요소로 분류된 애플리케이션의 CPU 사용을 보여 줍니다.

지원되는 이벤트는 다음과 같습니다.

이름 묘사
구문 분석 XAML 파일을 구문 분석하고 개체를 만드는 데 소요된 시간입니다.

타임라인 세부 정보에서 구문 분석 노드를 확장하면 루트 이벤트로 인해 구문 분석된 모든 XAML 파일의 종속성 체인이 표시됩니다. 이 팁을 사용하면 성능에 중요한 시나리오에서 불필요한 파일 구문 분석 및 개체 생성을 식별하고 최적화할 수 있습니다.
레이아웃 대규모 애플리케이션에서는 수천 개의 요소가 동시에 화면에 표시될 수 있습니다. 이 표시로 인해 UI 프레임 속도가 낮아지고 그에 따라 애플리케이션 응답성이 저하될 수 있습니다. Layout 이벤트는 각 요소(즉, Arrange, Measure, ApplyTemplate, ArrangeOverride 및 MeasureOverride에 소요된 시간)를 배치하는 비용을 정확하게 결정합니다. 또한 레이아웃 패스에 참여한 시각적 트리를 빌드합니다. 이 시각화를 사용하여 가지치기할 논리 트리를 결정하거나 다른 지연 메커니즘을 평가하여 레이아웃 과정을 최적화할 수 있습니다.
렌더링 XAML 요소를 화면에 그리는 데 소요된 시간입니다.
I/0 로컬 디스크 또는 WinINet(Windows Internet) API통해 액세스되는 네트워크 리소스에서 데이터를 검색하는 데 소요된 시간입니다.
앱 코드 구문 분석 또는 레이아웃과 관련이 없는 애플리케이션(사용자) 코드를 실행하는 데 소요된 시간입니다.
Xaml 기타 XAML 런타임 코드를 실행하는 데 소요된 시간입니다.

프로파일링을 시작하여 UI 스레드에서 실행되는 앱 메서드를 볼 때 애플리케이션 타임라인 도구와 함께 CPU 사용량 도구를 선택합니다. 장기 실행 앱 코드를 백그라운드 스레드로 이동하면 UI 응답성이 향상될 수 있습니다.

타임라인 세부 정보 사용자 지정

타임라인 세부 정보 도구 모음을 사용하여 타임라인 세부 정보 보기 항목의 주석을 정렬, 필터링 및 지정할 수 있습니다.

이름 묘사
정렬 기준 시작 시간 또는 이벤트 길이를 기준으로 정렬합니다.
프레임 에 따라 이벤트를 그룹화하기 프레임별로 이벤트를 그룹화할 최상위 Frame 범주를 추가하거나 제거합니다.
필터 타임라인 세부 정보 목록 선택한 범주 및 이벤트 길이를 사용하여 목록을 필터링합니다.
타임라인 세부 정보 사용자 지정 이벤트에 대한 주석을 지정할 수 있습니다.