双缓冲绘图中显卡对于分担CPU任务的作用有多大。我现在做了一个程序,双缓冲绘图,将一个20W个数据的队列绘制成曲线图,每秒更新一次。但CPU占用率比较高,达到80%。
如何能够提高效率降低CPU占用率?队列数据为double型,纵坐标每格大小也以double型表示,每点的纵坐标以(int)(double/double)得到。
如何能够提高效率降低CPU占用率?队列数据为double型,纵坐标每格大小也以double型表示,每点的纵坐标以(int)(double/double)得到。
看看有没有办法把计算分散,就是说不要一下子计算这么多,比如在添加该数据时候就计算。
PS:
绘制完一次后加个Sleep(0)应该也不能减少cpu的使用,只能使其他程序比较有反应。
你为什么要 1秒 更新显示一次数据,是有新的数据加入? 还是所有 20W 数据同时更新?
1,如果是 新数据加入,可以只显示新数据, 所有数据的显示放在 OnPaint中进行.
2,如果同时 20W 数据更新,因为显示屏 其实不可能 分辨 20W个数据,可选择性的显示部分数据。例如间隔取数.
MemDC->MoveTo(startPOINT);
for(i=start;i<end;i++)
{
MemDC->LineTo(nextPOINT);
}此过程占用了相当多的时间。
很可能几个连续点是在同一个像素上的,这几个点只要绘制一个就行了.
lineto太占时间了.要取舍,不能所有的点全部画上.
第一:最好使用区域而不要使用LineTo
第二:在做这个的时候首先要考虑去除无用信息,比如说重合点,
第三:在BITBLT的时候不要缩放不要旋转,直接上屏