xymc 发表于 2020-4-17 19:21:29

读取ini数据存入数组效率慢,ReDim的问题(已解决)

本帖最后由 xymc 于 2020-4-18 00:22 编辑

"D:\客户机数据" 里面有几万个帐号.ini ,想读取ini里面的数据储存到数组里面,用for读完要差不多10分钟,有什么办法可以提高下效率
逛了会论坛发现原来是ReDim的问题,循环写入数组时,每增加一行数据用ReDim调整数组大小+1时出现的问题
如果预设数组大小为5w,读取完5w的ini文件只需要60s以内
现在知道是这个问题,但预设的数组毕竟是过大,真实有数据的可能没有5w,怎么删除数组里面空的内容呢?
-----------------------------------------------------------------------------------------------------------------------------------------
找到解决方案了,大概思路如下
预设数组大小为5w
ReDim $zhongduan;调整一个已经存在的数组的大小
循环读取ini存入数组时加个计次
读取完所有ini后再用ReDim调整下数组大小就行,多少行数据就调整多大
-----------------------------------------------------------------------------------------------------------------------------------------

这里找到的答案
https://www.autoitx.com/forum.php?mod=viewthread&tid=71667&highlight=%CA%FD%D7%E9

Local $path = "D:\客户机数据"
      Local $FileList = _FileListToArray($path)
      If Not @error Then
                ;MsgBox(0,"所有的文件\文件夹数量",$FileList)
                For $i = 1 To $FileList Step 1
                        Local $ini_path = $path&$FileList[$i]&"\账号.ini","QQ");ini路径
                        If @error Then
                              MsgBox(4096, "", "错误, 读取INI文件失败.")
                        Else
                              For $ii = 1 To $var
                                        ;MsgBox(4096, "", "关键字: " & $var[$ii] & @CRLF & "值: " & $var[$ii])
                                        ;读取到的数据存入数组
                                        ;........
                              Next
                        EndIf
                Next
      EndIf

itsky2 发表于 2020-4-17 20:23:46

这种级别的不上数据库 没啥子办法的

破帽遮颜 发表于 2020-4-17 20:25:51

先读取文本,放到内存,再正则获取应该快很多?

xymc 发表于 2020-4-17 20:42:10

破帽遮颜 发表于 2020-4-17 20:25
先读取文本,放到内存,再正则获取应该快很多?

有没有相关的例子可以参考下

破帽遮颜 发表于 2020-4-17 21:46:37

xymc 发表于 2020-4-17 20:42
有没有相关的例子可以参考下

自己修改一下UDF就可以了
页: [1]
查看完整版本: 读取ini数据存入数组效率慢,ReDim的问题(已解决)