【发布时间】:2017-09-20 12:20:15
【问题描述】:
我有一个大约 750,000 行的大型文本文件,每隔几秒就会不断更新,我希望能够实时监控行数。我能够做到这一点,但响应时间成本非常高。
function GetFileSize( filename )
local fp = io.open( filename )
if fp == nil then
return nil
end
file = {}
for line in fp:lines() do
if (file[line] ~= line) then
table.insert(file, line)
end
end
d(table.size(file))
local filesize = fp:seek( "end" )
fp:close()
return filesize
end
我试图得到两个东西,大小(字节)和行数。
但是,一遍又一遍地用 750,000 行填充表格,不断地从上到下读取文件,会导致相当多的处理时间。
有没有办法在不严重阻碍我的系统的情况下获取文件大小(以字节为单位)和行数。
几乎我猜我必须在函数之外创建一个永久表,您可以在其中读取文件并将行添加到表中。但是,我不知道如何阻止它每隔几秒就自我复制一次。
我应该放弃行数并坚持字节返回,因为这根本不会减慢我的速度吗?或者有没有一种有效的方法来获得两者。
谢谢!
【问题讨论】:
-
如果您需要行数,而不是行的实际内容,则不需要将它们存储在表格中。只需计算它们。
-
你在文件中存储了什么?每条线总是相同的长度吗?你想准确到什么程度?如果适用,total_byte_count/byte_count_per_line 会给你行数。
-
@warspyking 我不需要文件中的信息,只需要处理时间最少的行数。
-
请重新阅读我的评论。你误会了。
标签: lua