找回密码
 加入
搜索
楼主: happytc

[系统综合] 看了下国人写的类au3 的AAuto,推荐下[已解决]

 火... [复制链接]
发表于 2011-8-10 14:17:08 | 显示全部楼层
不是吧?这么好的软件。下来看看了
发表于 2011-8-10 14:17:53 | 显示全部楼层
给个下载地址。学习一下了
发表于 2011-8-10 14:17:54 | 显示全部楼层
回复  游戏

au3里用Fox循环是慢,但换成别的,就快多了,如下面的两个循环,do循环明显比For快太多了
...
happytc 发表于 2011-8-10 13:50



我一直觉得我有点“资源控”,“效率控”,开编写过程中,若在资源,效率方面有优势的方法,我都立马采用,纵使有些方法并不太完善...

看到你的例子,我才知道,for循环中,即使步进为1,不填上步进值会比填上步进运行的效率高...
发表于 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)  

评分

参与人数 1金钱 +30 收起 理由
powerofos + 30 感谢提供

查看全部评分

发表于 2011-8-10 15:36:40 | 显示全部楼层
回复 15# happytc

并不是au3的do循环更快,而是你的代码写错了.
你的$j在内部循环中没有初始化,所以执行完第一轮循环以后,后面的循环根本没有执行,一个是千万次,一个是十万零一百次,当然你测出来是do循环快了
发表于 2011-8-10 17:33:27 | 显示全部楼层
http://www.aau.cn/
AU3阵容强大,快手更是后起之秀。各有优劣。各取所爱。
发表于 2011-8-10 18:14:52 | 显示全部楼层
听起来很不错哟,特别是中文 方面 ,因为是国人所做哈哈。AU3详细点的文档,都是英文的。看着头晕啊。
发表于 2011-8-10 18:20:51 | 显示全部楼层
回复 19# qqmmcc

为何FOR比WHILE慢? 两者转成汇编语言后 使用了哪些指令?
发表于 2011-8-10 18:32:03 | 显示全部楼层
回复 15# happytc


    FOR怎么会比DO/While慢,第3个DO循环,你根本没有为 $j 赋初值,后一次的循环 $j 仍旧是上次的值,你给出的 FOR和DO的测试例子,两者的循环次数根本不一样。
发表于 2011-8-10 18:38:48 | 显示全部楼层
回复 15# happytc
逻辑错误,鉴定完毕
发表于 2011-8-10 20:17:23 | 显示全部楼层
我大致试用过,就是开发工具有些不稳定,经常自动退出~别的还是不错的
 楼主| 发表于 2011-8-10 20:24:07 | 显示全部楼层
回复 21# 游戏


    嗯,忘了在第一层循环对$j=1了

不过,这点要承认,aauto这方面比au3快很多。

我的机子上的测试结果跟下面帖的差不多
http://hi.baidu.com/luac/blog/item/fa2feefcf94ef949d7887d5f.html
发表于 2011-8-10 20:32:23 | 显示全部楼层
回复 15# happytc

怎么我测的FOR 比 DO 还快呢?帮忙看代码,看下那里错了,如下:



#include <Array.au3>
Dim $sArray[5][2]=[["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[100], $jj[10000] 
$begin = TimerInit()
   For $i  In $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][1] = TimerDiff($begin)
        $list += 1
        EndFunc

Func _add($a)
        $a += 29
        $a -= 28
        EndFunc
                                 
_ArrayDisplay($sArray)

发表于 2011-8-10 20:36:09 | 显示全部楼层
回复 28# happytc
你给的链接打不开。。能否转一下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-30 01:10 , Processed in 0.078661 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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