lua - 测量 lua 中耗时(+love2D)

标签 lua love2d

我正在尝试使用 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() 返回一个数字,会发生什么情况。而且 - 这是衡量应用程序执行时间的好方法吗?

最佳答案

startend应该总是在增长,除非时间停止,在这种情况下我们都有麻烦了。

它们之间的增量将随着时间的变化而变化<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/

相关文章:

lua - 使用 lua 进行速率限制

lua - 定义平台表的更短方法

lua - 矩形碰撞系统在 love2d 中不起作用

lua - 在 lua 中传递不带括号的表会出现错误

oop - Lua继承和方法

class - Lua 错误创建类

function - 表内有名称的表

variables - 在 Lua 中控制变量范围;它正在改变两个 Vars

c++ - 在C++应用程序中嵌入Lua脚本会把Lua部分编译成机器码吗?

lua静态分析: detecting uninitialized table field