已解决 穷举目录及其文件,用什么方法效率最高?
本帖最后由 Qokelate 于 2012-3-28 22:57 编辑如题,假定目标目录是一个结构非常复杂的目录,如Win7的系统盘,要把它的所有子目录和文件列出来,用什么方法效率最高?
答案见26楼 怎么都感觉问题 不错我就不敢妄言了,关注ing 批处理 tree c:\windows /f 哈哈,速度还真快,回头我测试下可否枚举出其他机器的文件夹,如果可以就更好啦 回复 3# netegg
CMD的速度的确很快,但是否能将其原理应用在Au3中? dir c:\windows /s/b 回复 6# 3mile
CMD效率高的原理是什么?能讲解下吗 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 回复 8# lixiaolong
AU3内部关键字的效率其实并不高,代码再好也是枉然,关键还得API 回复 9# Qokelate
调api也没用,autoit在解析上花的时间就比纯编译文件要多,这个大概是所有脚本类(或者说解释型)语言都存在的问题 我写过某个函数, 在排序与 CMD 的 dir 命令不同时,快过 dir 1/3 左右,排序相同时速度接近甚至超过 dir
刚翻了半天,不知道放在哪个脚本里了…
注意在比对效率时,搜索同一目录时第一次的搜索不算。(不管Au3或是CMD,搜索过一次之后速度都会明显快N多……) 我写过某个函数, 在排序与 CMD 的 dir 命令不同时,快过 dir 1/3 左右,排序相同时速度接近甚至超过 dir
...
afan 发表于 2012-3-18 03:29 http://www.autoitx.com/images/common/back.gif
启用索引服务,呵呵,下次搜索的时候比较快 回复 11# afan
的确如此,貌似Win本身会记录某些特征,那函数的思路还记得吗?也许可以重构个 回复 12# 虫子樱桃
即使禁用索引,第二次搜索也是比第一次要快的!不过有个前提就是未重启! 回复 13# Qokelate
用 FileFindFirstFile()、FileFindNextFile() 是肯定的
页:
[1]
2