성능 최적화: 기타 권장 사항

업데이트: 2007년 11월

이 항목에서는 WPF 응용 프로그램 성능 최적화 단원의 항목 내용에 추가되는 성능 권장 사항을 제공합니다.

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

  • 브러시의 불투명과 요소의 불투명 비교
  • 개체 탐색
  • 대형 3차원 화면에서의 적중 테스트
  • CompositionTarget.Rendering 이벤트
  • crollBarVisibility=Auto 사용 안 함
  • 시작 시간을 줄이도록 Font Cache Service 구성
  • 터미널 서비스 렌더링 개선
  • 관련 항목

브러시의 불투명과 요소의 불투명 비교

Brush를 사용하여 요소의 Fill 또는 Stroke를 설정하는 경우 요소의 Opacity 속성을 설정하는 것보다 Brush.Opacity 값을 설정하는 것이 더 좋습니다. 요소의 Opacity 속성을 수정하면 WPF에서 임시 화면을 만듭니다.

개체 탐색

NavigationWindow 개체는 Window에서 파생되고 주로 NavigationService 및 저널을 집계하는 콘텐츠 탐색 지원을 통해 확장됩니다. URI(Uniform Resource Identifier) 또는 개체를 지정하여 NavigationWindow의 클라이언트 영역을 업데이트할 수 있습니다. 다음 샘플에서는 이러한 두 가지 방법을 보여 줍니다.

private void buttonGoToUri(object sender, RoutedEventArgs args)
{
    navWindow.Source = new Uri("NewPage.xaml", UriKind.RelativeOrAbsolute);
}

private void buttonGoNewObject(object sender, RoutedEventArgs args)
{
    NewPage nextPage = new NewPage();
    nextPage.InitializeComponent();
    navWindow.Content = nextPage;
}

NavigationWindow 개체에는 해당 창에서의 사용자 탐색 기록을 기록하는 저널이 있습니다. 저널의 목적 중 하나는 사용자가 사용자의 단계를 다시 수행할 수 있도록 하는 것입니다.

URI(Uniform Resource Identifier)를 사용하여 탐색하면 저널에서는 URI(Uniform Resource Identifier) 참조만 저장합니다. 이는 페이지를 다시 방문할 때마다 동적으로 다시 구성하기 때문에 페이지가 복잡할 경우 많은 시간이 걸릴 수도 있습니다. 이 경우 저널 저장 비용은 낮지만 페이지를 다시 구성하는 시간이 많이 걸릴 수 있습니다.

개체를 사용하여 탐색하면 저널에서는 개체의 전체 시각적 트리를 저장합니다. 즉, 페이지를 다시 방문할 때마다 페이지를 다시 구성하지 않고 바로 렌더링합니다. 이 경우 저널 저장 비용은 높지만 페이지를 다시 구성하는 시간이 줄어듭니다.

NavigationWindow 개체를 사용하는 경우에는 저널링 지원이 사용자 응용 프로그램의 성능에 미치는 영향에 대해 고려해야 합니다. 자세한 내용은 탐색 개요를 참조하십시오.

대형 3차원 화면에서의 적중 테스트

대형 3차원 화면에서의 적중 테스트는 CPU 사용 면으로 볼 때 성능에 영향을 미치는 작업입니다. 3차원 화면에 애니메이션 효과를 주는 경우 특히 더 영향을 미칩니다. 이러한 화면에서 적중 테스트가 필요 없는 경우에는 적중 테스트를 해제하십시오. UIElement에서 파생된 개체는 IsHitTestVisible 속성을 false로 설정하여 적중 테스트를 해제할 수 있습니다.

CompositionTarget.Rendering 이벤트

CompositionTarget.Rendering 이벤트는 WPF에서 계속 애니메이션 효과를 주도록 합니다. 이 이벤트를 사용하는 경우 상황에 따라 이 이벤트를 분리하십시오.

crollBarVisibility=Auto 사용 안 함

가능하면 HorizontalScrollBarVisibility 및 VerticalScrollBarVisibility 속성에 ScrollBarVisibility.Auto 값을 사용하지 마십시오. 이러한 속성은 RichTextBox, ScrollViewerTextBox 개체에 대해 정의되고 ListBox 개체의 연결 속성으로 정의됩니다. 대신 ScrollBarVisibilityDisabled, Hidden 또는 Visible로 설정하십시오.

Auto 값은 공간이 제한되어 스크롤바가 필요한 경우에 사용합니다. 예를 들어 텍스트 100줄을 제공하는 TextBox보다 30개 항목의 ListBox를 제공하는 이 ScrollBarVisibility 값을 사용하는 것이 더 좋습니다.

시작 시간을 줄이도록 Font Cache Service 구성

WPF Font Cache 서비스는 WPF 응용 프로그램 간에 글꼴 데이터를 공유합니다. 서비스가 실행되고 있지 않은 경우 첫 번째 WPF 응용 프로그램에서 이 서비스를 시작합니다. Windows Vista를 사용하면 "WPF(Windows Presentation Foundation) Font Cache 3.0.0.0" 서비스를 "수동(기본값)"에서 "자동(지연된 시작)"으로 설정하여 WPF 응용 프로그램의 초기 시작 시간을 줄일 수 있습니다.

터미널 서비스 렌더링 개선

원격 데스크톱 연결을 사용하면 원격으로 클라이언트에서 서버의 응용 프로그램을 실행하여 클라이언트에 해당 응용 프로그램을 표시할 수 있습니다. 여기서 서버는 다중 동시 원격 데스크톱 연결을 제공할 수 있는 Windows 터미널 서버이거나 단일 원격 데스크톱 연결을 제공할 수 있는 Windows 버전입니다. 사용자가 원격 데스크톱 연결을 통해 응용 프로그램을 실행하면 응용 프로그램은 서버에서 실행되고 클라이언트의 키보드 및 마우스 동작이 서버로 전송되며 이로 인해 서버에서 생성된 응용 프로그램 UI는 비트맵으로 클라이언트에 전송됩니다.

그러나 사용자 인터페이스를 시뮬레이션하기 위해 네트워크를 통해 비트맵을 클라이언트로 전송하는 것은 클라이언트에서 UI를 로컬로 렌더링하는 것과 같은 성능을 제공하지 못합니다. 다행히 RDC(원격 데스크톱 연결) 세션에서 실행되는 WPF 응용 프로그램은 Windows Vista의 특별한 렌더링 지원을 사용하여 클라이언트에 렌더링할 수 있습니다.

이러한 지원을 사용하려면 다음과 같은 작업이 필요합니다.

  • 서버는 Windows Vista Ultimate 또는 Windows Vista Enterprise를 사용하여 설치해야 합니다.

  • 서버에는 DWM(데스크톱 창 관리자) 메모리 요구 사항을 충족시킬 수 있는 충분한 메모리가 필요합니다. 비디오 카드와 같은 기타 DWM 요구 사항은 충족시킬 필요가 없습니다.

  • 클라이언트 버전은 서버의 Vista 버전과 같아야 합니다.

  • 클라이언트에서 Windows DWM(데스크톱 창 관리자)을 실행할 수 있어야 합니다. 데스크톱 창 관리자 세션 관리자 서비스를 실행하면 DWM이 활성화됩니다.

  • 클라이언트에서는 Meeting Space 또는 원격 지원과 같이 DWM을 비활성화할 수 있는 응용 프로그램을 실행해서는 안 됩니다.

  • 클라이언트에서는 다중 홉을 통해 필요한 WPF 응용 프로그램이 있는 서버에 연결할 수 없습니다. 다중 홉이란 세션에서 또 다른 세션을 만드는 것을 의미합니다.

  • 클라이언트의 원격 데스크톱 연결 구성에는 다음이 포함됩니다.

    • 데스크톱 컴퍼지션원격 데스크톱 연결 | 옵션 | 작업 환경에서 선택해야 합니다.

    • 테마원격 데스크톱 연결 | 옵션 | 작업 환경에서 선택해야 합니다.

    • 32비트 색원격 데스크톱 연결 | 옵션 | 표시 | 색에서 선택해야 합니다.

참고

DWM 요구 사항에 대한 자세한 내용은 Windows Vista Rules for Enabling Windows Aero를 참조하십시오.

참고 항목

개념

응용 프로그램 성능 계획

성능 최적화: 하드웨어 이용

성능 최적화: 레이아웃 및 디자인

성능 최적화: 2차원 그래픽 및 이미징

성능 최적화: 개체 동작

성능 최적화: 응용 프로그램 리소스

성능 최적화: 텍스트

성능 최적화: 데이터 바인딩

WPF 성능 도구 및 리소스

애니메이션에 대한 유용한 정보