redapple2008
发表于 2011-8-10 14:17:08
不是吧?这么好的软件。下来看看了
redapple2008
发表于 2011-8-10 14:17:53
给个下载地址。学习一下了
powerofos
发表于 2011-8-10 14:17:54
回复游戏
au3里用Fox循环是慢,但换成别的,就快多了,如下面的两个循环,do循环明显比For快太多了
...
happytc 发表于 2011-8-10 13:50 http://www.autoitx.com/images/common/back.gif
我一直觉得我有点“资源控”,“效率控”,开编写过程中,若在资源,效率方面有优势的方法,我都立马采用,纵使有些方法并不太完善...
看到你的例子,我才知道,for循环中,即使步进为1,不填上步进值会比填上步进运行的效率高...
qqmmcc
发表于 2011-8-10 14:53:29
了解底层,就知道FOR循环是比WHILE循环慢的
游戏
发表于 2011-8-10 15:09:40
本帖最后由 游戏 于 2011-8-10 15:27 编辑
回复 15# happytc
AAuto 在我的破电脑上,执行同样的代码,只要0-16毫秒,平均比au3快300倍
var a,i,j = 0,1,1;
do{
do{
a += 29;
a -= 28;
j += 1;
}while(j<100001)
i += 1
}while(i<101)
游戏
发表于 2011-8-10 15:36:40
回复 15# happytc
并不是au3的do循环更快,而是你的代码写错了.
你的$j在内部循环中没有初始化,所以执行完第一轮循环以后,后面的循环根本没有执行,一个是千万次,一个是十万零一百次,当然你测出来是do循环快了
txhr1spa
发表于 2011-8-10 17:33:27
http://www.aau.cn/
AU3阵容强大,快手更是后起之秀。各有优劣。各取所爱。
taliove
发表于 2011-8-10 18:14:52
听起来很不错哟,特别是中文 方面 ,因为是国人所做哈哈。AU3详细点的文档,都是英文的。看着头晕啊。
pusofalse
发表于 2011-8-10 18:20:51
回复 19# qqmmcc
为何FOR比WHILE慢? 两者转成汇编语言后 使用了哪些指令?
pusofalse
发表于 2011-8-10 18:32:03
回复 15# happytc
FOR怎么会比DO/While慢,第3个DO循环,你根本没有为 $j 赋初值,后一次的循环 $j 仍旧是上次的值,你给出的 FOR和DO的测试例子,两者的循环次数根本不一样。
3mile
发表于 2011-8-10 18:38:48
回复 15# happytc
逻辑错误,鉴定完毕
dafei2599
发表于 2011-8-10 20:17:23
我大致试用过,就是开发工具有些不稳定,经常自动退出~别的还是不错的
happytc
发表于 2011-8-10 20:24:07
回复 21# 游戏
嗯,忘了在第一层循环对$j=1了
不过,这点要承认,aauto这方面比au3快很多。
我的机子上的测试结果跟下面帖的差不多
http://hi.baidu.com/luac/blog/item/fa2feefcf94ef949d7887d5f.html
wa18239
发表于 2011-8-10 20:32:23
回复 15# happytc
怎么我测的FOR 比 DO 还快呢?帮忙看代码,看下那里错了,如下:
#include <Array.au3>
Dim $sArray=[["For...To...Step...Next "],["For...To...Next "],["For...In...Next "],["While...WEnd"],["Do...Until"]] ;数组初始化
Local $a = 0 ,$list =0 ,$i = 0, $j = 0
Local $begin = TimerInit()
For $i = 1 To 100 Step 1
For $j = 1 To 10000 Step 1
_add($a)
Next
Next
_list()
$begin = TimerInit()
For $i = 1 To 100
For $j = 1 To 10000
_add($a)
Next
Next
_list()
Local $ii, $jj
$begin = TimerInit()
For $iIn $ii
For $j In $jj
_add($a)
$j += 1
Next
$i += 1
$j = 0
Next
_list()
$begin = TimerInit()
Local$i = 0, $j = 0
While $i <= 100
While $j <= 10000
_add($a)
$j += 1
WEnd
$i += 1
$j = 0
WEnd
_list()
Local $i = 0, $j = 0
$begin = TimerInit()
Do
Do
_add($a)
$j += 1
Until $j > 10000
$i += 1
$j = 0
Until $i > 100
_list()
Func _list()
$sArray[$list] = TimerDiff($begin)
$list += 1
EndFunc
Func _add($a)
$a += 29
$a -= 28
EndFunc
_ArrayDisplay($sArray)
wa18239
发表于 2011-8-10 20:36:09
回复 28# happytc
你给的链接打不开。。能否转一下