이 페이지가 유용했습니까?
이 콘텐츠에 대한 여러분의 의견은 중요합니다. 의견을 알려주십시오.
추가 의견
1500자 남음
내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8용 Windows Phone 응용프로그램 분석을 사용하여 일반적인 성능 문제를 식별 및 해결하는 방법

Windows Phone 응용프로그램 분석 도구를 사용하여 앱 관련 성능 문제를 식별할 수 있습니다. 앱을 모니터링하거나 프로파일링한 후 타임라인에서 관심 섹션(예: 높은 CPU 사용 영역, 낮은 프레임 속도)을 강조 표시하여 선택한 섹션의 자세한 성능 분석을 표시할 수 있습니다. 응용프로그램 분석 도구의 여러 성능 경고를 통해 간단하게 문제를 조사할 수 있습니다. 예를 들어 프레임 그리기 이외의 작업에 CPU가 많이 사용됨은 보다 효율적으로 프레임을 그릴 수 있도록 UI 스레드의 차단을 해제하거나 부담을 줄이는 조치를 취해야 함을 나타냅니다. 그러나 다른 경고를 조사하기 위해 수행해야 하는 작업이 덜 분명합니다. 이 항목에서는 응용프로그램 분석 도구를 사용하여 일반적인 성능 문제를 파악하고 해결하는 방법에 대해 설명합니다.

이 항목에는 다음 단원이 포함되어 있습니다.

이 섹션에서는 애니메이션과 관련된 일반적인 성능 경고를 파악하고 해결하는 방법에 대해 설명합니다.

캐시된 UI 요소의 애니메이션 때문에 캐시가 자주 무효화됨

캐시 무효화는 캐시된 버전의 요소가 더 이상 사용되지 않게 될 때 발생합니다. 캐시 무효화는 앱 상태 변경이 화면에 요소가 표시되는 방식에 영향을 미치기 때문에 발생합니다. 이런 변경이 발생하면 상태 업데이트를 반영하기 위해 UI 요소 및 모든 자식 요소를 다시 그려야 합니다. 또한 애니메이션 중에 프레임마다 업데이트가 발생한다는 점에 주의하세요. 이와 같이 업데이트가 자주 이루어지므로 애니메이션으로 인한 업데이트는 필요한 UI 요소로 제한하는 것이 중요합니다.

잦은 캐시 무효화 경고를 조사하려면

  1. 성능 경고 옆에 있는 화살표를 클릭하고 메뉴에서 프레임을 선택합니다.

    타임라인에서 선택한 기간 동안 렌더링된 모든 프레임의 목록이 표시됩니다.

  2. 값이 내림차순(가장 큰 값부터 가장 작은 값)으로 정렬될 때까지 CPU 시간 열 머리글을 클릭합니다.

    이렇게 하면 CPU 리소스를 많이 사용하며 캐시 무효화가 자주 발생할 가능성이 큰 프레임을 확인할 수 있습니다.

  3. CPU 사용량이 가장 많은 프레임을 선택합니다.

  4. CPU 사용량이 가장 많은 프레임을 선택한 상태로 프레임 옆의 화살표를 클릭하고 캐시 업데이트를 선택합니다.

    측정 시간, 정렬 시간 또는 질감 업데이트 시간이 가장 큰 UI 요소가 프레임 렌더링 중에 업데이트된 요소입니다. 이 열의 값이 크면 캐시 무효화가 발생한 것입니다.

  5. 프레임 보기로 돌아가서 CPU 사용량이 가장 많은 프레임을 선택합니다.

  6. 프레임 옆의 화살표를 클릭하고 메뉴에서 {x} 프레임의 시각적 트리를 선택합니다.

    프레임 렌더링 시의 시각적 트리가 모든 UI 요소 리소스 사용과 함께 표시됩니다.

  7. 값이 내림차순으로 정렬될 때까지 총 그리기 시간(포함) 열 머리글을 클릭합니다.

    해당 프레임 업데이트 과정에서 렌더링 시간이 가장 길었던 UI 요소가 맨 위에 옵니다. 요소는 각 UI 요소와 모든 자식을 렌더링하는 데 걸린 시간(밀리초)과 함께 시각적 트리 계층 구조에 나열됩니다. 어떤 유형이 캐시 업데이트 보고서에서 식별된 요소를 계속 무효화하는지 확인하려면 자식 요소가 차지하는 그리기 시간의 비율이 크지 않은 요소를 찾습니다. 이는 부모 요소 때문에 렌더링이 지연되었음을 의미합니다.

이 섹션에서는 반응하지 않는 UI와 관련된 일부 일반적인 성능 경고를 파악하고 해결하는 방법에 대해 설명합니다.

사용자 인터페이스 스레드에서 프레임 그리기 이외의 작업에 CPU가 보통 이상으로 많이 사용됨

사용자 인터페이스 스레드에서 프레임 그리기 이외의 작업에 CPU가 보통 이상으로 많이 사용됨 성능 경고가 나타난다면 UI 스레드의 차단을 해제하거나 부담을 줄여야 할 수 있습니다. 이렇게 하면 UI 스레드에서 더 효율적으로 프레임 그리기를 처리할 수 있습니다. 더 효율적인 코드로 다시 작성하는 것도 도움이 되지만, UI 요소와 직접 상호 작용하지 않는 모든 작업을 해당 스레드로 옮기는 것이 가장 좋습니다. 그러면 UI와 상관없는 작업 때문에 UI 스레드에 백로그가 생기지 않으며, UI 스레드는 최대한 효율적으로 사용자 인터페이스를 렌더링하는 데 주력할 수 있습니다. Windows Phone 앱의 스레딩에 대한 자세한 내용은 Windows Phone 8의 앱 성능 고려 사항에서 스레드 이해 섹션을 참조하세요.

참고참고:

애니메이션 실행은 응용프로그램 분석 도구에서 프레임 그리기 작업으로 간주되기 때문에 애니메이션 관련 코드로 인해 이 특정 성능 경고가 발생하지는 않습니다.

UI 스레드에서 높은 CPU 사용을 조사하려면

  1. 높은 CPU 사용 경고를 조사하려면 성능 경고 옆의 화살표를 클릭하고 메뉴에서 프레임함수를 차례로 클릭합니다.

    함수 보기가 표시됩니다. 함수 보기는 선택된 타임라인 부분에서 호출된 모든 메서드를 보여 줍니다. 이는 플랫폼 코드 또는 앱 코드의 메서드일 수 있습니다.

  2. 함수가 이러한 값의 내림차순(가장 큰 값부터 가장 작은 값)으로 정렬될 때까지 포함 샘플 열 머리글을 클릭합니다.

  3. 목록 위쪽에서 앱 코드에 포함된 메서드를 찾습니다.

    하나 이상의 앱 메서드가 많이 샘플링된 함수 중 상위에 포함될 수 있습니다. 즉, 이 메서드를 자주 호출하거나 메서드가 비효율적이거나 성공적으로 실행하는 데 오랜 시간이 걸릴 수 있습니다. 두 경우 모두 앱 반응성 문제를 초래하는 UI 블록이 발생합니다.

  4. 메서드에 대한 코드를 최적화하거나 UI 이외의 스레드로 이동합니다.

콘텐츠를 다시 그릴 때 CPU가 많이 사용되는 문제

성능 그래프에서 CPU 사용량이 많고 프레임 속도가 느린 영역을 확인할 수 있습니다. 다음 이미지에서는 이 경우의 예를 보여 줍니다.

High CPU usage

지나치게 자주 콘텐츠가 다시 그려지고 그에 따라 UI(사용자 인터페이스)가 응답하게 되는 문제를 나타내는 두 가지 경고가 있습니다.

콘텐츠를 다시 그릴 때 CPU가 많이 사용되기 때문에 프레임 속도가 저하됨

UI 요소가 자동으로 캐시되지 않고 있음을 의미합니다. 이는 일반적으로 지나치게 복잡한 시각적 트리(UI 요소의 계층 구조) 때문입니다. 해결 방법은 시각적 트리를 단순화하거나 애니메이션 도중 시각적 트리의 각 요소에서 실행되는 코드 양을 줄이는 것입니다.

콘텐츠를 다시 그리는 동안 CPU가 많이 사용됨

UI 요소가 자동으로 캐시되지 않고 있음을 의미합니다. 이는 일반적으로 지나치게 복잡한 시각적 트리(UI 요소의 계층 구조) 때문입니다. 해결 방법은 시각적 트리를 단순화하거나 애니메이션 도중 시각적 트리의 각 요소에서 실행되는 코드 양을 줄이는 것입니다.

콘텐츠를 다시 그릴 때 CPU가 많이 사용되는 문제를 조사하려면

  1. 성능 경고 옆에 있는 화살표를 클릭하고 메뉴에서 프레임을 선택합니다.

    타임라인에서 선택한 기간 동안 렌더링된 모든 프레임의 목록이 표시됩니다.

  2. 값이 내림차순(가장 큰 값부터 가장 작은 값)으로 정렬될 때까지 CPU 시간(ms) 열 머리글을 클릭합니다.

    이렇게 하면 렌더링하는 동안 CPU를 가장 많이 사용한 프레임을 확인할 수 있습니다.

  3. CPU 시간이 가장 많은 프레임을 선택합니다.

  4. 가장 높은 CPU 프레임을 선택한 상태로 프레임 옆의 화살표를 클릭하고 {x} 프레임의 시각적 트리를 선택합니다.

    프레임 렌더링 시의 시각적 트리가 모든 UI 요소 리소스 사용과 함께 표시됩니다.

  5. 값이 내림차순으로 정렬될 때까지 총 그리기 시간(포함) 열 머리글을 클릭합니다.

    시각적 트리 계층 구조의 각 UI 요소와 모든 자식을 렌더링하는 데 걸린 시간(밀리초)을 확인하여 프레임 업데이트 과정에서 렌더링 시간이 가장 길었던 UI 요소를 확인할 수 있습니다.

  6. 그리는 데 오랜 시간이 걸리는 여러 자식 요소가 있는 요소를 찾습니다. 이러한 종류의 요소는 문제가 있음을 나타내며 해당 요소에 대한 시각적 트리 단순화를 고려해야 합니다.

    이 요소의 시각적 트리를 단순화할 경우 프레임을 다시 그리는 동안 업데이트하고 캐시해야 할 요소가 줄어듭니다.

  7. 요소를 업데이트, 조작 또는 표시할 때 실행되는 코드를 솔루션에서 검색하고, 코드를 찾은 경우 생략하거나 보다 효율적으로 수정할 수 있는 CPU 바인딩된 작업을 검색합니다. 이렇게 할 수 없는 경우 이러한 함수의 실행을 UI 스레드 대신 직접 만든 스레드로 이동해 보세요.

표시:
© 2015 Microsoft