返回列表 发帖

[效率算法] 请教各高手,实现每隔120秒的周期检查操作,如何设计,比较省CPU占用资源?

我原来是这么做的:
  1. While 1

  2. If $xxx = $xx Then
  3.   ;进行相关操作
  4. EndIf
  5.    
  6. Sleep(120000)

  7. WEnd
复制代码
这里我发现有个问题,编译运行后,就算条件不成立,没有进行相关操作,笔记本电脑的风扇也会自己高速转起来,退出这个程序,就没什么问题了,说明AutoIt这种周期检测程序对CPU的占用还是挺高资源使用的.(事实上我已经使用裸奔系统,没有其它什么防病毒之类的软件在后台)

我是想到另外一个思路,获取现在时间作为变量1,然后去获取新的时间作为变量2,
那么变量2-变量1,如果差值等于120,那么就进入到检测操作,应该会比While + Sleep的方式更占用少的CPU资源吗?

Sleep() 本来就应该是降低CPU占用的惯用手段,怎么就还占用且高了?估计是代码其它部分的问题,你可以进行最简测试看看~
请勿私信提问,有问题请发帖。

TOP

回复 1# sanfer8889


   你用  SLEEP (10)  看看  資源 有無降下來

TOP

Sleep() 本来就应该是降低CPU占用的惯用手段,怎么就还占用且高了?估计是代码其它部分的问题,你可以进行最 ...
afan 发表于 2018-2-8 14:33


代码很简单的,就是检测系统服务有无起来,有起来,就关掉。。。

TOP

回复  sanfer8889


   你用  SLEEP (10)  看看  資源 有無降下來
kk_lee69 发表于 2018-2-8 15:04



立马就解决了CPU高占用的问题。。。。,晕,都不知道原因所在。。。

TOP

回复 5# sanfer8889


    因為你 SLEEP 太多了@@  系統忙著計算   要SLEEP 的時間還有多久

TOP

建议采用时间判断  + sleep(10)

TOP

;注册函数
AdlibRegister("_aa", 120000)

Func _aa()
;这里每120秒运行一次
EndFunc
;AdlibUnRegister("_aa")注销函数

TOP

120秒执行一次,其余时间都在SLEEP,占用会高?

TOP

些帖子好多大神回复!!
学不会,努力学!!!

TOP

返回列表