找回密码
 加入
搜索
查看: 4217|回复: 9

[效率算法] 求个判断表达式

  [复制链接]
发表于 2010-12-9 18:41:15 | 显示全部楼层 |阅读模式
while 1
  if true then
 .....
 endif
 sleep(100)
Wend
可以用比较节省内存的方式写吗?
去掉“while 1”这段大概能节约一半内存
代码目的大概是:循环判断某个变量是否为true,若是则执行if内的语句
发表于 2010-12-9 18:51:38 | 显示全部楼层
想不到好方法
HotKeySet("{F4}","Change")

Global $a = False
Do
        Sleep(100)
Until $a

Func Change()
        $a = True
EndFunc

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-12-9 19:18:52 | 显示全部楼层
回复 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[0])
                DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
        Else
                Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
        EndIf

        Return $ai_Return[0]
EndFunc   ;==>_ReduceMemory 

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-12-9 20:50:02 | 显示全部楼层
想不明白,现在内存那么大,AU3占这点内存算个啥子?!
 楼主| 发表于 2010-12-9 23:11:44 | 显示全部楼层
3楼的料猛,学习了。
2楼可能不太适合我的情况(不是让程序等待,为真时继续执行,,而是反复判断某个变量,为真时执行特定代码,也即if 内的代码)。
不管怎么说,谢谢2位了!
发表于 2010-12-10 01:08:53 | 显示全部楼层
回复 4# benkel


    幸好,不是所有人都是你这样的想法。
你原本的代码在1秒钟内能完成某种功能,你在考虑到程序效率及资源的占用情况之后,如果你优化了它,那么新的代码就可以在0.9秒内完成同一种功能,不要小看这0.1秒,想想2的0次方是1,1次方是2,4次方16,到了32次方,就成了43亿,指数级的增长速度是非常吓人的。
你的代码能在1小时内做完一件事情,而我的却可以在59分钟之内完成。你的需要1天内完成,我的却能在23小时内完成。你的能在1年内完成,我的就能在8个月内完成。你的代码需要100年,我的却只需要50年,这就是差别。

评分

参与人数 1金钱 +30 收起 理由
lixiaolong + 30 说的好!

查看全部评分

 楼主| 发表于 2010-12-10 07:34:02 | 显示全部楼层
同意楼上的,不仅如此,就我这个例子而言,布尔值2秒左右会变化一次,如果代码执行太慢,超过两秒,岂不漏掉了许多?4楼想明白没
发表于 2010-12-10 09:04:05 | 显示全部楼层
大家能谈谈以上问题有什么样的解决思路么?
发表于 2010-12-10 10:17:50 | 显示全部楼层
回复 6# pusofalse

深有同感,同样是写程式的,有的人写出来的代码只用十行,而有的人写出来却有百来行,并不是说两者之间有一者有错,而是使用的算法,思路,逻辑思维不一样,所以出来的结果也不一样!这也就印证了一句话:“条条大道通罗马”.....
但是,好的编程风格和思路,可以少走很多弯路啊。
发表于 2010-12-10 14:20:41 | 显示全部楼层
用AdlibRegister 注册IF里的为一个 Adlib 函数,可以指定多长时间调用一次函数
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 03:21 , Processed in 0.087764 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表