在Lua中解析文件的最有效方式

我正试图弄清楚使用Lua从文件中解析数据的最有效方法。例如,假设我有一个包含以下内容的文件(example.txt):

0,数据
74,实例
4294967295,用户
255,时间

如果我只想要逗号前面的数字,我可以想到几种获取信息的方法。我会从 f = io.open(example.txt)获取数据,然后使用一个for循环来解析f的每一行。这就是我的问题的核心。最有效的方法是什么?

在for循环中,我可以使用以下任何方法来获取逗号前的数字:

line.find(regex)
line:gmatch(regex)
line:match(regex)

或Lua的split函数

是否有人进行过这些/其他方法的速度测试,可以指出解析速度最快的方法?如果您能谈论解析小文件和大文件的速度,那就更好了。

点赞
用户107090
用户107090

你可能想使用 line:match("%d+")

line:find 也可以工作,但返回的结果比你所需的多。

line:gmatch 不是你需要的因为它的作用是匹配字符串中的多个项目,而不是一个,并且应该在循环中使用。

至于速度,你需要自己进行测量。从下面的简单代码开始:

for line in io.lines("example.txt") do
  local x=line:match("%d+")
  if x~=nil then print(x) end
end
2014-07-30 00:42:05