请问一个关于GDI+ CPU占用过高的有关问题
请教一个关于GDI+ CPU占用过高的问题?
我做的是基于MapX的地图显示程序,目前显示各方面都很正常。现在的问题是CPU占用率有点高。
当地图放大比例比较小的时候,CPU占用10%左右吧,当放大的比率比较大时能达到25%(四核的,应该就是100%),而且我地图上只是绘制了一个旋转过的椭圆和一条射线而已,并不复杂。
请教各位帮忙指点一下,这是什么原因?
谢谢!!
------解决方案--------------------
m_vecTaskModule.size(); 多大?
------解决方案--------------------
gdi+的效率不如gdi,这是我测试的结果,因为gdi+使用方便了,一个好处自然就会引入一个坏处,否则就说明gdi写的不好,有很大的提升空间
另外directx的效率也不如gdi,这也是我测试的结果。
当然,这些测试都是gdi支持的,我想用gdi+和directx的地方,应该都是用gdi无法实现的地方。比如用directx的directdraw来画一条简单直线,恐怕还不如gdi。而且我也不知道如何用directdraw来画一条直线,只知道取出HDC来LineTo,从直觉上来看,也不觉得这样用directdraw有什么好处,所以还是要不同地方不同的分析。
- C/C++ code
Graphics *pGraphics = Graphics::FromHDC( dcMemDst.m_hDC ); for( size_t i = 0; i < m_vecTaskModule.size(); i++ ) { m_vecTaskModule[i].pTaskModule->Draw( pGraphics, rect ); } delete pGraphics;
我做的是基于MapX的地图显示程序,目前显示各方面都很正常。现在的问题是CPU占用率有点高。
当地图放大比例比较小的时候,CPU占用10%左右吧,当放大的比率比较大时能达到25%(四核的,应该就是100%),而且我地图上只是绘制了一个旋转过的椭圆和一条射线而已,并不复杂。
请教各位帮忙指点一下,这是什么原因?
谢谢!!
------解决方案--------------------
m_vecTaskModule.size(); 多大?
------解决方案--------------------
gdi+的效率不如gdi,这是我测试的结果,因为gdi+使用方便了,一个好处自然就会引入一个坏处,否则就说明gdi写的不好,有很大的提升空间
另外directx的效率也不如gdi,这也是我测试的结果。
当然,这些测试都是gdi支持的,我想用gdi+和directx的地方,应该都是用gdi无法实现的地方。比如用directx的directdraw来画一条简单直线,恐怕还不如gdi。而且我也不知道如何用directdraw来画一条直线,只知道取出HDC来LineTo,从直觉上来看,也不觉得这样用directdraw有什么好处,所以还是要不同地方不同的分析。