Lua io.lines()是流式传输还是slurp文件?
对于支持逐行处理的算法,lua文档建议在while循环中使用Lua io.lines()是流式传输还是slurp文件?,lua,Lua,对于支持逐行处理的算法,lua文档建议在while循环中使用io.lines()比io:read(“*line”)更有效 调用io.read(“*行”)返回当前输入的下一行 文件,不带换行符。(…)但是,要在 一行一行地处理整个文件,我们最好使用io.lines迭代器。() 我可以想象出io.lines()调用被首选的三个可能原因 迭代器比while循环更有效 文件读取的处理效率更高 更容易阅读/维护代码 lua文档还提升了slurping文件 (y)OU应始终考虑读取整个文件的替代方案 使用i
io.lines()
比io:read(“*line”)
更有效
调用io.read(“*行”)返回当前输入的下一行
文件,不带换行符。(…)但是,要在
一行一行地处理整个文件,我们最好使用io.lines迭代器。()
我可以想象出io.lines()
调用被首选的三个可能原因
(y)OU应始终考虑读取整个文件的替代方案 使用io.read中的选项“*all”,然后使用gfind将其拆分()
假设:io:read(“*行”)
对文件进行流式处理。如果lua中的slurping更有效,并且io.lines()
slurps文件,那么io.lines()
可能因此更有效
但是,关于io.lines()
请注意,它是一个迭代器,这不会带来
最初将整个文件保存到内存中
这意味着流媒体而不是口吃
TLDR是否
io.lines()
将整个文件保存在内存中,还是一次只保存一行?它的内存使用是否与while循环中的io:read(“*line”)
不同?io.lines()
不会将整个文件保存在内存中:它一次读取一行文件,而不是一次读取整个文件。为此,请使用io.read(“*all”)
来澄清,io.lines是否将整个文件保存在内存中?我知道我一次只能访问一行,但它的内存使用情况与while循环中的io:read(“*行”)不同吗?