GDI+ 특성

GDI+(System.Drawing) 느려서 못 쓸 정도인가?
벤치마크 테스트 후 나 혼자 결론을 내보았습니다.

GDI: 1ms
GDI+: 4~5ms
Direct2D: 7ms

윈도우 컨트롤 같은 작은 이미지에서 쓸 경우 GDI 보다 느리지만 안티앨리어싱 및 고급 기능을 지원하는 GDI+ 사용은 준수한 성능이라고 생각됩니다.
수치 상 GDI 보다 4~5배 지만 retained mode에서 10ms 내의 차이를 보여줍니다.
Direct2D는 ID2D1DCRenderTarget Bind 과정의 오버헤드가 있는 것 같고요

GDI+는 벤치마크에 취약하다.
큰 이미지, 드로잉 객체가 많은 작업에는 불리합니다.
메모리 관리 쪽에 상당히 무리가 가는 걸로 추측합니다.(메모리 커밋, 페이지폴트)

결론: 약간 느리지만 커스텀 컨트롤 등 작은 이미지에 쓰는 건 좋은 선택이다.
복잡한 차트나 큰 이미지의 경우 Direct2D 또는 SkiaSharp 권장.

10개의 좋아요

이게 전에 stackoverflow에서도 d2d관련 비슷한 결론이 났던걸로 기억을 합니다.
결과적으로 d2d는 가급적 사용하지 말고 d3d를 써라로요.
물론 꽤나 전에 본거라 어디서 봤는지는 기억이 안나네요.

더블 버퍼링 오류가 있어서 수정하고 현재
GDI: 3ms
GDI+: 5ms
Direct2D: 3ms

일단 D2D는 성능, 품질 우수하고 GDI+는 약간 계륵이 되는 듯 하지만 나쁘지 않은 결과
좀 더 테스트 하고 최종 결론을 내겠습니다.