完整的 vs. 简单的 I/O Lua

我正在尝试编写一个程序来分析模拟数据。由于运行Lua程序的模拟软件是我正在使用的软件,我不确定这是否是问这个问题的正确地方,但我可能会犯编程错误。

我正在努力解决使用简单IO模型和完整IO模型之间的差异。我有一个代码块,它能正常工作,看起来像这样:

io.output([[filename_and_location]])
function segment.other_actions
    if ion_splat ~= 0 then io.write(ion_px_mm, "\n") end
    io.close()
end

注意:ion_splat和ion_px_mm是预先确定的变量,它们具有数值。此代码在整个模拟过程中反复运行。

然后我决定尝试使用完整的I/O模型以同样的方式来实现:

 f = io.open([[file_name_and_location]],"w")
 function segment.other_actions ()
    if ion_splat ~= 0 then f:write(ion_py_mm, "\n") end
    f:close()
    end
end

这个代码也能运行,但需要比另一种方式长得多的时间。这是为什么?

点赞
用户1881196
用户1881196

Example 1:

for i = 1, 1000 do
   io.output("test.txt")
   io.write("some data to be written\n")
   io.close()
end

对于这个例子,在执行 1000 次循环后,每次循环都会将“some data to be written”写入“test.txt”文件。该文件的输出流和文件都会在循环之间关闭和打开。

Example 2:

for i = 1, 1000 do
   local f = io.open("test.txt", "w")
   f:write("some data to be written\n")
   f:close()
end

对于这个例子,在执行 1000 次循环后,每次循环都会将“some data to be written”写入“test.txt”文件。该文件在循环之间显式打开,并保持打开状态。在写入数据后关闭文件并继续下一次循环。

两种方法在运行时间上没有显著差异。但后一种方法通常更好,因为使用的文件可以明确指定。

2015-06-30 01:02:48