请教在执行while循环时,如何有效的降低系统idle?(已解决)
本帖最后由 psplimp 于 2011-7-31 13:27 编辑问题如标题,求高手赐教,不胜感谢!!! 回复 1# psplimp
降低系统idle?是要降低cpu使用率吗?
如果用循环模式的话,一般来说要比事件模式占用资源多一些。 对,就是CPU占用率。
我要做个无限循环,随时侦测出现的提示框做相应的处理,在出现特定提示时退出循环。
程序运行起来,CPU占用率相当高。想有什么办法能降低占用率??? 循环里面加个sleep(20) 循环里面加个sleep(20)
papapa314 发表于 2011-7-29 18:16 http://www.autoitx.com/images/common/back.gif
楼上说的方法我试过,效果不明显。还有其他方法么? 回复 5# psplimp
是不是你的代码有问题,如果只是单纯的一个循环的话,不会占用多少CPU的,因为本身也没做什么!
我想平时写一些自己用着玩的脚本的时候还是消息循环模式比较多的,反正我是这么弄的,cpu并不高啊! 优化你的代码!
如何优化?帖出你的代码,我们还是不要空对空 回复psplimp
是不是你的代码有问题,如果只是单纯的一个循环的话,不会占用多少CPU的,因为本身也没做 ...
love5173 发表于 2011-7-29 18:24 http://www.autoitx.com/images/common/back.gif
"消息循环模式",是怎样的?楼上可否可以给些具体的提示?谢谢 优化你的代码!
如何优化?帖出你的代码,我们还是不要空对空
happytc 发表于 2011-7-29 18:27 http://www.autoitx.com/images/common/back.gif
例如:
while 1
if WinActive("消息提示1") Then
Send("{Enter}")
EndIf
if WinActive("消息提示2") Then
Send("{Enter}")
EndIf
if WinActive("特殊消息提示") Then
ExitLoop
EndIf
sleep(20)
wend while 1
_winapi_emptyworkingset()
if WinActive("消息提示1") Then
Send("{Enter}")
EndIf
if WinActive("消息提示2") Then
Send("{Enter}")
EndIf
if WinActive("特殊消息提示") Then
ExitLoop
EndIf
sleep(20)
wend
算是个投机取巧的法子 一般加sleep 就会有效降低cpu的啊
再加长点.. while 1
_winapi_emptyworkingset()
if WinActive("消息提示1") Then
Send("{Enter}")
EndIf
...
netegg 发表于 2011-7-30 06:53 http://www.autoitx.com/images/common/back.gif
万分感谢!!!
加了_winapi_emptyworkingset() 后,效果明显,CPU占用率50%左右了。
看了一下帮助,这个函数是用来“删除进程指定作业尽可能多的页面”,是什么意思?它的常规作用是什么? 回复 12# psplimp
说白点,就是整理内存
页面内存是以页为单位存储的 感谢楼上的解释 我怎么没找到改分类为“已解决”的选项???
页:
[1]
2