psplimp 发表于 2011-7-29 17:43:55

请教在执行while循环时,如何有效的降低系统idle?(已解决)

本帖最后由 psplimp 于 2011-7-31 13:27 编辑

问题如标题,求高手赐教,不胜感谢!!!

daiyu116 发表于 2011-7-29 18:00:09

回复 1# psplimp

降低系统idle?是要降低cpu使用率吗?
如果用循环模式的话,一般来说要比事件模式占用资源多一些。

psplimp 发表于 2011-7-29 18:07:59

对,就是CPU占用率。
我要做个无限循环,随时侦测出现的提示框做相应的处理,在出现特定提示时退出循环。

程序运行起来,CPU占用率相当高。想有什么办法能降低占用率???

papapa314 发表于 2011-7-29 18:16:58

循环里面加个sleep(20)

psplimp 发表于 2011-7-29 18:19:59

循环里面加个sleep(20)
papapa314 发表于 2011-7-29 18:16 http://www.autoitx.com/images/common/back.gif

楼上说的方法我试过,效果不明显。还有其他方法么?

love5173 发表于 2011-7-29 18:24:43

回复 5# psplimp

是不是你的代码有问题,如果只是单纯的一个循环的话,不会占用多少CPU的,因为本身也没做什么!
我想平时写一些自己用着玩的脚本的时候还是消息循环模式比较多的,反正我是这么弄的,cpu并不高啊!

happytc 发表于 2011-7-29 18:27:26

优化你的代码!
如何优化?帖出你的代码,我们还是不要空对空

psplimp 发表于 2011-7-29 18:27:33

回复psplimp

是不是你的代码有问题,如果只是单纯的一个循环的话,不会占用多少CPU的,因为本身也没做 ...
love5173 发表于 2011-7-29 18:24 http://www.autoitx.com/images/common/back.gif

"消息循环模式",是怎样的?楼上可否可以给些具体的提示?谢谢

psplimp 发表于 2011-7-29 18:42:11

优化你的代码!
如何优化?帖出你的代码,我们还是不要空对空
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

netegg 发表于 2011-7-30 06:53:57

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

算是个投机取巧的法子

minterz 发表于 2011-7-30 11:06:47

一般加sleep 就会有效降低cpu的啊
再加长点..

psplimp 发表于 2011-7-31 09:21:17

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%左右了。
看了一下帮助,这个函数是用来“删除进程指定作业尽可能多的页面”,是什么意思?它的常规作用是什么?

happytc 发表于 2011-7-31 09:59:53

回复 12# psplimp

说白点,就是整理内存
页面内存是以页为单位存储的

psplimp 发表于 2011-7-31 11:35:43

感谢楼上的解释

psplimp 发表于 2011-7-31 13:29:22

我怎么没找到改分类为“已解决”的选项???
页: [1] 2
查看完整版本: 请教在执行while循环时,如何有效的降低系统idle?(已解决)