我有一個大型的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