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

이 항목에서는 WPF 애플리케이션 성능 최적화 섹션의 항목 내용에 추가되는 성능 권장 사항을 제공합니다.

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

브러시의 불투명도와 요소의 불투명도 비교

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;
}
Private Sub buttonGoToUri(ByVal sender As Object, ByVal args As RoutedEventArgs)
    navWindow.Source = New Uri("NewPage.xaml", UriKind.RelativeOrAbsolute)
End Sub

Private Sub buttonGoNewObject(ByVal sender As Object, ByVal args As RoutedEventArgs)
    Dim nextPage As New NewPage()
    nextPage.InitializeComponent()
    navWindow.Content = nextPage
End Sub

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

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

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

NavigationWindow 개체를 사용할 때는 저널링 지원이 애플리케이션 성능에 미치는 영향을 염두에 두어야 합니다. 자세한 내용은 탐색 개요를 참조하세요.

대형 3D 화면에서의 적중 횟수 테스트

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

CompositionTarget.Rendering 이벤트

CompositionTarget.Rendering 이벤트로 인해 WPF가 지속적으로 애니메이션 효과를 주게 됩니다. 이 이벤트를 사용하는 경우 기회가 될 때마다 이 이벤트를 분리하세요.

ScrollBarVisibility=Auto 사용 안 함

가능하면 HorizontalScrollBarVisibilityVerticalScrollBarVisibility 속성에 ScrollBarVisibility.Auto 값은 사용하지 마세요. 이러한 속성은 RichTextBox, ScrollViewerTextBox 개체에 대해 정의되며 ListBox 개체에 대한 연결된 속성으로 정의됩니다. 대신 ScrollBarVisibilityDisabled, Hidden 또는 Visible로 설정합니다.

Auto 값은 공간이 제한되어 스크롤 막대가 필요할 때만 표시되어야 하는 경우를 위한 것입니다. 예를 들어 텍스트가 수백 줄인 TextBox가 아닌 이 ScrollBarVisibility 값을 30개 항목의 ListBox와 함께 사용하는 것이 유용할 수 있습니다.

시작 시간을 줄이도록 글꼴 캐시 서비스 구성

WPF 글꼴 캐시 서비스는 WPF 애플리케이션 간에 글꼴 데이터를 공유합니다. 서비스가 실행되고 있지 않은 경우 처음 실행하는 WPF 애플리케이션에서 이 서비스가 시작됩니다. Windows Vista를 사용하면 “WPF(Windows Presentation Foundation) 글꼴 캐시 3.0.0.0” 서비스를 “수동(기본값)”에서 “자동(지연된 시작)”으로 설정하여 WPF 애플리케이션의 초기 시작 시간을 줄일 수 있습니다.

참고 항목