저는 긴 캔버스에 많은 선을 그립니다 (스트립 차트를 생각하십시오). 저급 지오메트리 클래스를 사용하고 동결하는 등 성능을 상당히 잘 조정했습니다. 이로 인해 성능이 크게 향상되었지만 캔버스에 몇 천 개의 항목을로드하는 데 몇 초가 걸렸습니다. 애플리케이션에 대한 성능 분석을 실행했는데 canvas.children.add()
을 호출 할 때마다 큰 비율의 시간이 걸리는 것처럼 보입니다. 나는 이것이 가벼운 호출이어야한다는 것을 읽었고, 한 번에 여러 번 호출했기 때문에 무언가를 처리하려고해서는 안된다 ... 아마도 다른 이유가있을 수있다. 시간이 너무 많아? 그리고 어떤 식 으로든 속도를 낼 수 있을까요?WPF 캔버스 성능 - children.add는 여러 번 호출되었습니다.
성능은 심각하지 않지만 나중에 더 큰 데이터 세트를 처리해야 할 때 더 많은 문제가 발생할 수 있습니다.
참고로이 샘플에서는 1400 회 호출 된 것처럼 보이며 최신/빠른 노트북에서는 거의 3 초의 CPU 시간이 필요합니다.
캔버스가 다른 컨트롤의 계층에 포함되어 있기 때문에 캔버스가이 컨트롤에 기여하는지 궁금합니다.
추가 참고 : 그리드 부모 컨테이너를 채우기 위해 설정되었으므로 캔바스의 특정 높이를 설정하지 않았습니다. 이것이 문제의 근원이 될 수 있을까요?
성능면에서 http : //msdn.microsoft.com/en-us/library/system.windows.media.streamgeometry.aspx 스트림 그리기 컨텍스트보다 가장 가벼운 구성 인 지오메트리. –
예, 이미 스트림 지오메트리를 사용하여 좋은 결과를 얻었습니다. 덕분에 –