大叔 发表于 2015-7-3 13:35:19

关于FileReadLine文件读取速度递减的问题 求解决办法【已解决】

本帖最后由 大叔 于 2015-7-5 15:20 编辑

$a=0
While 1
$a+=1
   FileReadLine("1.txt", $a)
If @error Then ExitLoop
WEnd

只是个例子按行读取数据我的数据大概有10万多行结果处理了很久都没好,后来我加了TrayTip
让他每分钟报一次条数发现 衰减很大

8000   

13200

17100

20300

23000

25600

27800

29900

第一分钟能读取8000多行。2分钟5000多行。到第八分钟的时候已经只能每分钟读取1000多条了。再往后衰减到一分钟只能读取几百条    我这数据读了一个多小时都没读完,我想问问高手。 我用FileReadLine 读取第9万条数据是不是他需要把前面8999行数据都读过之后才能获取?除了拆分文件还有没有别的办法可以更快的读取数据

131738 发表于 2015-7-3 14:07:01

从性能的角度来看, 一行行读取是一个坏主意, 此时"行号"参数是由一逐行递增.
这将迫使 AutoIt 从开始重读该文件, 直至达到指定的行.

大叔 发表于 2015-7-3 15:47:54

本帖最后由 大叔 于 2015-7-3 15:51 编辑

从性能的角度来看, 一行行读取是一个坏主意, 此时"行号"参数是由一逐行递增.
这将迫使 AutoIt 从开始重读该 ...
131738 发表于 2015-7-3 14:07 http://www.autoitx.com/images/common/back.gif


    请问 请问对这样大量数据的读取有什么好办法么。 求指教   我仓建了内存盘。 尝试把数据放在内存盘里读取希望他能增加点速度结果区别不大。 后期依旧衰减的很厉害~

131738 发表于 2015-7-3 17:51:08

若没有指定行号, 则将自动读取"下一行".
如果打开的文件较大, 读取会比使用文件句柄要慢得多.

没读过你那大的文件, 只是帮助文档如是说!
试试不使用行号参数......

afan 发表于 2015-7-3 20:55:50

"1.txt" 该参数要使用打开的句柄,而不要使用文件路径

御风兮飘然 发表于 2015-7-3 22:21:55

FileReadLine示例/演示
;要打开的文件
Local $file = FileOpen("1.txt", 0)

; 检查打开的文件是否可读
If $file = -1 Then
    MsgBox(4096, "错误", "不能打开文件.")
    Exit
EndIf

; 每次读取一行文本,直到文件结束.
While 1
    Local $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    MsgBox(4096, "读取的行:", $line)
WEnd

FileClose($file)

大叔 发表于 2015-7-5 15:19:10

若没有指定行号, 则将自动读取"下一行".
如果打开的文件较大, 读取会比使用文件句柄要慢得多.

没读过你 ...
131738 发表于 2015-7-3 17:51 http://www.autoitx.com/images/common/back.gif


    万分感谢131738 元老。   不指定行号果断好使。10万多条数据 处理不到两分钟   

    同时也感谢其它几位热心朋友爱死你们了

nqawen 发表于 2015-7-7 08:33:13

找高手,用正则更是飞快吧
页: [1]
查看完整版本: 关于FileReadLine文件读取速度递减的问题 求解决办法【已解决】