Qokelate 发表于 2012-3-17 23:22:05

已解决 穷举目录及其文件,用什么方法效率最高?

本帖最后由 Qokelate 于 2012-3-28 22:57 编辑

如题,假定目标目录是一个结构非常复杂的目录,如Win7的系统盘,要把它的所有子目录和文件列出来,用什么方法效率最高?


答案见26楼

502762378 发表于 2012-3-17 23:26:43

怎么都感觉问题 不错我就不敢妄言了,关注ing

netegg 发表于 2012-3-17 23:42:09

批处理 tree c:\windows /f

502762378 发表于 2012-3-17 23:51:54

哈哈,速度还真快,回头我测试下可否枚举出其他机器的文件夹,如果可以就更好啦

Qokelate 发表于 2012-3-17 23:58:08

回复 3# netegg


    CMD的速度的确很快,但是否能将其原理应用在Au3中?

3mile 发表于 2012-3-18 00:12:00

dir c:\windows /s/b

Qokelate 发表于 2012-3-18 00:39:33

回复 6# 3mile


    CMD效率高的原理是什么?能讲解下吗

lixiaolong 发表于 2012-3-18 01:34:46

core i3 笔记本, 运行时间: 138.657 秒,不知道快不快...
#include <File.au3>

_SpeedFindFile('C:\Windows')

Func _SpeedFindFile($sPath, $sFileName = '')
        $aFileList = _FileListToArray($sPath)
        If Not @error Then
                For $i = 1 To $aFileList
                        If StringInStr(FileGetAttrib($sPath & '\' & $aFileList[$i]), "D") Then
                                _SpeedFindFile($sPath & '\' & $aFileList[$i])
                        EndIf
                        ConsoleWrite($sPath & '\' & $aFileList[$i] & @CRLF)
                Next
        EndIf
EndFunc   ;==>_SpeedFindFile

Qokelate 发表于 2012-3-18 01:39:19

回复 8# lixiaolong


    AU3内部关键字的效率其实并不高,代码再好也是枉然,关键还得API

netegg 发表于 2012-3-18 02:05:25

回复 9# Qokelate
调api也没用,autoit在解析上花的时间就比纯编译文件要多,这个大概是所有脚本类(或者说解释型)语言都存在的问题

afan 发表于 2012-3-18 03:29:55

我写过某个函数, 在排序与 CMD 的 dir 命令不同时,快过 dir 1/3 左右,排序相同时速度接近甚至超过 dir
刚翻了半天,不知道放在哪个脚本里了…
注意在比对效率时,搜索同一目录时第一次的搜索不算。(不管Au3或是CMD,搜索过一次之后速度都会明显快N多……)

虫子樱桃 发表于 2012-3-18 11:22:14

我写过某个函数, 在排序与 CMD 的 dir 命令不同时,快过 dir 1/3 左右,排序相同时速度接近甚至超过 dir
...
afan 发表于 2012-3-18 03:29 http://www.autoitx.com/images/common/back.gif


    启用索引服务,呵呵,下次搜索的时候比较快

Qokelate 发表于 2012-3-18 11:32:32

回复 11# afan


    的确如此,貌似Win本身会记录某些特征,那函数的思路还记得吗?也许可以重构个

Qokelate 发表于 2012-3-18 11:33:47

回复 12# 虫子樱桃


    即使禁用索引,第二次搜索也是比第一次要快的!不过有个前提就是未重启!

afan 发表于 2012-3-18 12:42:59

回复 13# Qokelate


    用 FileFindFirstFile()、FileFindNextFile() 是肯定的
页: [1] 2
查看完整版本: 已解决 穷举目录及其文件,用什么方法效率最高?