尝试查看 Lua 脚本执行需要多长时间

我正在尝试让我的 Lua 脚本告诉我整个脚本执行需要多长时间,以便进行改进

我尝试在网上使用诸如 os.clock()os.time()os.difftime() 等函数以实现此目的,但最终它们总是返回 0。 有人知道我该如何做吗?

点赞
用户4984564
用户4984564
```lua
local before = os.clock()

for i=1,1e6 do
   local double = i*2
end

local after = os.clock()

print(string.format("Loop took %0.6f seconds to run", after - before)

本地变量 before 记录当前时间。

使用 for 循环一个百万次,将当前值乘以 2 并将结果存储在本地变量 double 中。

本地变量 after 记录循环结束的时间。

输出循环整个过程的时间。

2020-08-03 06:49:24
用户51685
用户51685

如果间隔时间太短,就多运行几次片段,直到得出有意义的性能数字为止。

例如,Python 的 timeitautorange 功能会运行要计时的函数,直到基准测试至少需要两秒钟的时间。

这样,你会得到两个数字;n,你实际运行的代码迭代次数,和 t,用于运行它们的时间(秒)。n / t 将成为每秒迭代次数,t / n * 1000 是每次迭代的毫秒数。

2020-08-03 06:52:27
用户13619683
用户13619683

注意,os.clock对于很短的声明/脚本不够精确。这就是为什么像DarkWiiPlayer所指出的那样运行代码多次是一个好方法。如果您想谈论优化,那么我们需要提到分析。一段时间以前,我使用纯Lua制作了一个分析器,您可以使用它:https://bitbucket.org/itraykov/profile.lua/src/master/在分析时,您可以看到代码的哪些部分需要最长的执行时间。

2020-08-05 10:51:22