Lua 中 os.clock() 函数的精度问题

我曾认为 Lua 的 os.clock() 函数返回的是秒数。但是从官方文档 https://www.lua.org/pil/22.1.html中的示例可以看到,他们的例子会将结果四舍五入到小数点后两位

local x = os.clock()
local s = 0
for i=1,100000 do s = s + i end
print(string.format("elapsed time: %.2f\n", os.clock() - x))

这是否意味着 os.clock() 函数返回的是 秒.毫秒 呢?

同时,在 Lua 中运行以下代码:

> print(os.clock())
0.024615

为什么会出现这些小数位呢?

原文链接 https://stackoverflow.com/questions/56995690

点赞
stackoverflow用户7680208
stackoverflow用户7680208

os.clockos.time 不是同一种类型的时间。

os.time 处理的是人类使用的 "壁钟时间" (wall-clock time)。

os.clock 是一个计数器,报告 CPU 时间。从 os.clock 得到的十进制数是 CPU 在运行当前任务时花费的秒数。CPU 时间与壁钟时间没有关联,除了使用相同的基本时间单位 (秒)。

2019-07-11 19:15:20