我有一个大型的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行的文件,不断地从上到下读取文件会导致相当多的处理时间。
有没有办法以字节为单位获得文件大小,但也可以获得行数,而不会严重阻碍我的系统。
非常多我猜我必须在函数之外创建一个永久表,在该函数中读取文件并将行添加到表中。但是,我不知道如何阻止它每隔几秒就重复一次。
我是否应该放弃行计数并坚持字节返回,因为这并不会减慢我的速度?或者是否有一种有效的方式来获得两者。
谢谢!
如果您需要行数,而不是行的实际内容,则不需要将它们存储在表中。只需数一数。 – tonypdmtr
你在文件中存储什么?每条线总是长度相同吗?你想成为多少准确?如果适用,total_byte_count/byte_count_per_line将为您提供行数。 – warspyking
@warspyking我不需要文件中的信息,只需要处理时间最少的行数。 – kalimin