如何降低CPU?

「已注销」 2009-10-11 01:00:35
我使用了settimer(1,30,NULL)来处理窗口形状、位置的不同显示,发现CPU耗得恨厉害,高手们有何指教啊?
...全文
227 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chqiang0_0 2009-10-19
  • 打赏
  • 举报
回复
的确用线程会好的,那样可以避免死循环。
qrlvls 2009-10-19
  • 打赏
  • 举报
回复
你用的是同步方式的 timer,本身对 CPU 占用不大,你的OnTimer处理过程本身比较耗时,考虑改用改进的算法,你要的连贯本身就是一个耗时的操作也是很正常的
另外,如果可行,某些情况下可以考虑使用 layered window
YODOYODO 2009-10-18
  • 打赏
  • 举报
回复
这种用法放到哪里也不会降低cpu,你要做的事情本来就很多,你又希望规定时间内做完, 还希望cpu占用低, 怎么可能呢?
ok208043624 2009-10-12
  • 打赏
  • 举报
回复
嗯 这样的话就另开一个线程吧,把OnTimer中做的都放到线程中。。
greatws 2009-10-12
  • 打赏
  • 举报
回复
用线程while循环中调用sleep的方式
ASIC_E 2009-10-12
  • 打赏
  • 举报
回复
用线程来处理会好些!
muzizongheng 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lee86lee 的回复:]
我要做一个连贯改变窗口位置的东西,发现ONTimer的间隔设置大,CPU降低很多,但为了连贯,又必须设定得小一些,也可能是我的方法和算法不好吧,我使用了sleep,确实管事,也有些不连贯,探索中......
[/Quote]

只能放到线程里了。 当然注意空循环, 不然cpu高。
arong1234 2009-10-11
  • 打赏
  • 举报
回复
眼睛能分辩的差异好像是0.1秒左右,因此高于100ms的精度对于眼睛来说是没有什么意义的。
其次,如果是高要求的绘图功能,普通的GDI操作是不适宜的,你需要使用一些诸如D3D之类的技术,使用显卡硬件分担一点操作。否则全部依赖CPU,你是物理上有很高的负载,是不可能降低下来的
[Quote=引用 5 楼 lee86lee 的回复:]
我要做一个连贯改变窗口位置的东西,发现ONTimer的间隔设置大,CPU降低很多,但为了连贯,又必须设定得小一些,也可能是我的方法和算法不好吧,我使用了sleep,确实管事,也有些不连贯,探索中......
[/Quote]
arong1234 2009-10-11
  • 打赏
  • 举报
回复
你这个技巧不适用他这种情况,使用技巧要明天他的真实原理
[Quote=引用 2 楼 miaolingshaohua 的回复:]
在操作以前可以先Sleep(1);一下,可以降低CPU占用率!

[/Quote]
「已注销」 2009-10-11
  • 打赏
  • 举报
回复
我要做一个连贯改变窗口位置的东西,发现ONTimer的间隔设置大,CPU降低很多,但为了连贯,又必须设定得小一些,也可能是我的方法和算法不好吧,我使用了sleep,确实管事,也有些不连贯,探索中......
ok208043624 2009-10-11
  • 打赏
  • 举报
回复
CPU占用率太高,说明你的代码中有死循环,或者有线程在空转。。。
Sleep能解决问题,主要看你在OnTimer中做啥了
muzizongheng 2009-10-11
  • 打赏
  • 举报
回复
第一, 把ontime里面做的 放到线程里做
第二, sleep(1);
哈利路亚1874 2009-10-11
  • 打赏
  • 举报
回复
在操作以前可以先Sleep(1);一下,可以降低CPU占用率!
an_bachelor 2009-10-11
  • 打赏
  • 举报
回复
間隔設大一點 OnTimer中作的操作少一點 能在其他消息響應函數中處理的盡量不要放在OnTimer中

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧