2011-01-10 7 views
8

우리는 기존의 Win32와 WPF 버전의 블로터 소프트웨어를 가지고 있습니다. 그러나 WPF 응용 프로그램을 실행하면 종종 Win32 응용 프로그램의 다시 그리기 속도가 느려집니다.WPF/Win32 응용 프로그램을 나란히 실행하면 성능 문제가 발생합니까?

WPF 응용 프로그램을 실행 (또는 최소화)하지 않으면 Win32 응용 프로그램에서 그리기 속도가 빠르고 유동적입니다. WPF 응용 프로그램을 함께 열면 Win32 응용 프로그램의 UI 그리기 속도가 크게 느려집니다. WPF 응용 프로그램을 실행하면 Win32 응용 프로그램 (그래픽이 무거움)에서 제거되는 일부 리소스가 사용되는 것 같습니다. 속도가 느려지는 것 같습니다.

CPU와 메모리는 포화 상태에 가깝지 않으므로 관련이 없습니다. 해상도를 낮추거나 표시 할 모니터 수를 줄이면 (따라서 비디오 카드 메모리 사용량과 대역폭로드가 줄어듦) 눈에 띄는 차이가 없으므로 그래픽 하드웨어 성능 문제는 아닙니다. 다음과 같은 원인을 설명 할 수

하나 개의 가설은 다음과 같습니다 후드에서

, 우리가 알고 기본적으로의 명령어 큐 인 창 "메시지 펌프"에 WPF 및 Win32 응용 프로그램을 출력 그래픽 정보를 모두 화면에 무엇을 그려야하는지. WPF 응용 프로그램이 실행되고 있지 않을 때 Win32에는 자유롭게 액세스 할 수 있고 화면 업데이트는 유동적 인 것처럼 보입니다. WPF 응용 프로그램을 실행하면 추가 메시지가이 큐에 저장되므로 Win32 응용 프로그램은 각 화면 요소 업데이트를 수행하기 위해 더 많이 경쟁해야하므로 "펌프를 막히는"효과가 나타납니다.

위와 같은 경우에는 누구든지이 문제를 방지하기 위해 창 메시지 펌프를 관리/제어하는 ​​방법을 권장 할 수 있습니까?

깜박임은 리소스가 부족할 때 일반적으로 발생하는 유형으로, 개별 요소 (양식, 레이블)가 깜박 거리고 점차적으로 화면에 그려지는 것을 볼 수 있습니다.

의견이나 아이디어가있는 분은 알려주십시오.

답변

3

각 프로세스마다 자체 메시지 펌프가 있습니다. 이것은 공유되지 않습니다.

CPU 사용률이 높지 않으면 WPF가 하드웨어 렌더링을 사용하므로 GPU 채도가 될 수 있습니다. GPU 사용에 대한 정보를 얻을 수 있습니까? GPU 활용을 얻기의

다음 포스트 자세한 방법 :

Programmatically fetch GPU utilization

+0

감사합니다. Google에서이 문제를 조사하고 있습니다. –

+0

직접적인 해결책은 아니지만 올바른 경로 (하드웨어/소프트웨어 렌더링을 면밀히 살펴야 함)로 안내하여 답변으로 받아들입니다. 감사! –

+0

@ Gaurav 나는 그 지역 주변에있을 것이라고 생각했다. 도움이되기를 기뻐한다. :) –

3

좋아, 나는 우리가 원인을 발견하고 수정하는 것 같아요. 요컨대, 하드웨어 및 소프트웨어 가속 창은 좋지 않습니다. 전반적으로 소프트웨어 렌더링을 사용하면 하드웨어 가속 윈도우를 실행할 때 이전에 있었던 결함을 수정합니다. 기존의 Win32 앱은 곧 폐기 될 예정이므로이 방법을 사용할 수 있습니다. 레거시 애플리케이션을 삭제할 때 하드웨어 가속을 다시 전환 할 수 있습니다.

주의 아래 :

이 보인다이 문제는 동시에 기존의 소프트웨어 가속 2D 응용 프로그램 (X) 및 3D 하드웨어 가속 WPF 하나 (Y)를 실행에 의해 발생하고, 그래픽입니다되고있다처럼 드라이버 문제.

Y를 강제로 WPF 소프트웨어 가속 모드로 실행하면 스크롤 성능이 거의 저하되지 않습니다 (병목 현상은 여전히 ​​격자의 내부 레이아웃 코드이므로).

그러나 Y는 현재 소프트웨어 가속화 된 2D 응용 프로그램으로 실행 중이므로 다른 컴퓨터의 Windows 응용 프로그램과 마찬가지로 X에서 느린 그리기 문제를 해결합니다. Y가 아닌 다른 응용 프로그램이 왜 속도 저하를 일으키는 지 설명합니다. 소프트웨어 및 하드웨어 가속 그래픽 응용 프로그램이 동시에 실행될 때 훌륭하게 작동하지 않는 것처럼 보입니다.

예를 들어 하드웨어 가속 게임을 할 때 하드웨어/소프트웨어 가속 모드간에 게임을 전환 할 때 데스크탑이 매우 느리게 다시 그려지는 것과 같은 방식으로 보았습니다.

다행히 성능에 큰 영향을주지 않고 하드웨어 렌더링을 해제 할 수 있습니다. X가 해제되면 Y에서 제공하는 사소한 이점 (더 부드럽게 애니메이션을 지원하고 속도를 늦추지 않고 채우기 그라디언트를 많이 사용)에 대해 하드웨어 가속을 다시 전환 할 수 있습니다.

관련 문제