我正在尝试使用 os.time() 函数测量代码执行时间并使用 LOVE 框架显示它。但是,令我惊讶的是,显示的时间正在改变...... 我的代码是:
function foo()
start_time = os.time()
<some code>
end_time = os.time()
elapsed_time = os.difftime(end_time-start_time)
love.graphics.print('start time: ' .. start_time .. 's', 12, 12)
love.graphics.print('end time: ' .. end_time .. 's', 12, 22)
love.graphics.print('time elapsed: ' .. elapsed_time .. 's', 12, 32)
end
当我离开窗口并打开图形时,时间正在发生变化(开始和结束增长以及 1 和 2 之间的差异变化) - 所以第一个问题是如果 os.time() 返回一个数字,会发生什么情况。而且 - 这是衡量应用程序执行时间的好方法吗?
最佳答案
start
和end
应该总是在增长,除非时间停止,在这种情况下我们都有麻烦了。
它们之间的增量将随着时间的变化而变化<some code>
需要执行。
os.time
通常返回过去某个任意点的秒数(通常是 1970 年 1 月 1 日 00:00:00)。这是不能保证的(它是根据 C 的 time
函数 which makes no such guarantees 实现的)。但它绝对应该始终在进步,否则它并没有真正给你时间,对吧?
顺便说一句,您正在使用difftime
错误的。您应该向它传递两个值,它会给出它们之间的差异。你正在向它传递一个值。它应该对此感到厌烦,但它似乎返回第一个值,在您的情况下,它意外地起作用,因为您碰巧在 difftime
的机器上。实际上是t2-t1。在其他系统上这可能会中断。您应该将调用更改为:
elapsed_time = os.difftime(end_time,start_time)
关于lua - 测量 lua 中耗时(+love2D),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15664760/