求个判断表达式
while 1if true then
.....
endif
sleep(100)
Wend可以用比较节省内存的方式写吗?
去掉“while 1”这段大概能节约一半内存
代码目的大概是:循环判断某个变量是否为true,若是则执行if内的语句 想不到好方法
HotKeySet("{F4}","Change")
Global $a = False
Do
Sleep(100)
Until $a
Func Change()
$a = True
EndFunc 回复 1# 蜘蛛抱蛋
优化内存不就解决了吗?
While 1
_ReduceMemory(@AutoItPID)
If True Then
MsgBox(0, 0, 0)
EndIf
Sleep(100)
WEnd
Func _ReduceMemory($i_PID = -1)
If $i_PID <> -1 Then
Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle)
DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle)
Else
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
EndIf
Return $ai_Return
EndFunc ;==>_ReduceMemory 想不明白,现在内存那么大,AU3占这点内存算个啥子?! 3楼的料猛,学习了。
2楼可能不太适合我的情况(不是让程序等待,为真时继续执行,,而是反复判断某个变量,为真时执行特定代码,也即if 内的代码)。
不管怎么说,谢谢2位了! 回复 4# benkel
幸好,不是所有人都是你这样的想法。
你原本的代码在1秒钟内能完成某种功能,你在考虑到程序效率及资源的占用情况之后,如果你优化了它,那么新的代码就可以在0.9秒内完成同一种功能,不要小看这0.1秒,想想2的0次方是1,1次方是2,4次方16,到了32次方,就成了43亿,指数级的增长速度是非常吓人的。
你的代码能在1小时内做完一件事情,而我的却可以在59分钟之内完成。你的需要1天内完成,我的却能在23小时内完成。你的能在1年内完成,我的就能在8个月内完成。你的代码需要100年,我的却只需要50年,这就是差别。 同意楼上的,不仅如此,就我这个例子而言,布尔值2秒左右会变化一次,如果代码执行太慢,超过两秒,岂不漏掉了许多?4楼想明白没 大家能谈谈以上问题有什么样的解决思路么? 回复 6# pusofalse
深有同感,同样是写程式的,有的人写出来的代码只用十行,而有的人写出来却有百来行,并不是说两者之间有一者有错,而是使用的算法,思路,逻辑思维不一样,所以出来的结果也不一样!这也就印证了一句话:“条条大道通罗马”.....
但是,好的编程风格和思路,可以少走很多弯路啊。 用AdlibRegister 注册IF里的为一个 Adlib 函数,可以指定多长时间调用一次函数
页:
[1]