본문 바로가기
닷넷/WPF

WPF 성능 최대화

by hyperhand 2010. 6. 10.
이번시간에는 WPF Application을 구현 할 때 성능을 최대화 할 수 있는 몇가지 방법에 대해서 소개해 드리겠습니다.
 속성 권장사항
 Brush 아래는 WPF에서 사용하는 Brush객체 중 속도가 가장 빠른 것에서 가장 느린 순서로 나열 되어 있습니다. 사용 용도에 맞게 Brush를 선택하여 사용하시면 보다 나은 성능을 발휘 할 수 있습니다.

SolidColorBrush -> LinearGradientBrush  -> ImageBrush -> DrawingBrush(캐시됨) ->
VisualBrush(캐시됨) -> RadialGradientBrush -> DrawingBrush(캐시되지 않음) -> VisualBrush(캐시되지 않음)
 ClipToBounds Viewport 또는 Grid 의 영역에 맞게 명시적으로 자를 필요가 없는 상황이라면 ClipBounds 속성을 False로 설정하는 것이 좋습니다. WPF에서는 자체적으로 안티얼라이싱을 수행하며 이를 자르기 위해서는 매우 속도가 느립니다. ClipToBounds는 기본적으로 활성화 되어 있기 때문에, 명시적으로 자를 필요가 없는 상황이라면 ClipBounds속성을 False로 설정하는 것이 좋습니다.
 IsHitTestVisible 마우스 적중 테스트를 수행할 때 고려할 필요가 없는 객체는 항상 IsHitTestVisible 속성을 False로 설정하는 것이 좋습니다.
 Opacity Brush를 사용하여 요소의 Fill 또는 Stroke를 설정하는 경우 객체 자체의 Opacity 속성을 설정하는 것보다 Brush의 Opacity 값을 설정하는 것이 더 좋습니다. 객체의 Opacity 속성을 수정하면 WPF에서 임시 화면을 만들기 때문에 속도가 느립니다.
 ScrollBarVisibility

가능하면 HorizontalScrollBarVisibility 및 VerticalScrollBarVisibility 속성을 Auto로 설정 하지 않는 것이 좋습니다. 이러한 속성은 RichTextBox, ScrollViewer 및 TextBox 개체에 대해 정의되고 ListBox 개체의 연결 속성으로 정의됩니다. 데이터가 추가되거나 삭제될때 마다 ScrollBar에 대한 연산이 필요하므로 가능하면 Disabled, Hidden 또는 Visible로 명시적으로 설정하는것이 좋습니다.

 BitmapEffect  BitmapEffect는 영향을 받는 모든 내용이 하드웨어 가속 없이 렌더링됩니다. 최상의 성능을 위해서는 BitmapEffect를 사용하지 않는 것이 좋습니다.
반응형