用lua测量经过的时间(+love2D)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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()返回的是一个数字,怎么会发生这种情况?还有--这是个测量我的应用程序执行时间的好方法吗?
start
和 end
应该一直在增长,除非时间停止,在这种情况下,我们都有麻烦了。
它们之间的差距会随着时间的长短而改变 <some code>
执行所需的时间。
os.time
通常返回从过去某个任意点开始的秒数(通常是111970 00:00:00)。这并不保证(它是用C语言的 time
功能 其中不作任何保证). 但绝对应该一直在推进,否则就不是真的给你时间了吧?
另外,你用的是 difftime
错。你应该传给它两个值,它给你它们之间的区别。你只传给它一个值。你传给它的是一个值 应 吧,但它似乎在返回第一个值,在你的情况下,它意外地工作了,因为你碰巧在一台机器上,而在这台机器上的 difftime
实际上是t2-t1。在其他系统中,这可能会被破坏。你应该把调用改为。
elapsed_time = os.difftime(end_time,start_time)
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
首先,关于 os.time()
返回值是一个数字,其含义取决于你的系统。 在POSIX、Windows和其他一些系统中。这个数字计算从某个给定的开始时间("纪元")开始的秒数。. 在其他系统中,没有指定意义,时间返回的数字只能作为date和difftime的参数。
逐步迭代。
start_time
将时间存储为数字。- 你的代码执行起来需要一定的时间。
end_time
存储现在时间的数值。它将是一个大于或等于以下的数字start_time
.- 时差的计算方法是
os.difftime()
呼叫(句法错误).
的值。start
和 end
将会在每次迭代时改变,因为你的系统从epoch开始已经向未来发展了一点。另外, elapsed_time
被报告为1或2秒,这是您的代码执行所需的时间。
您也可以使用Lua的 os.clock()
返回执行代码所需的时间(秒)。
试试 love.timer.getTime 从0.9.0开始,它返回微秒级的精确时间。那个链接有一个如何计时的例子。
它可以用于相对时间(减法比较)。如果你想要更多的绝对时间,可以试试类似的东西。
do
local _getTime = love.timer.getTime
local initialTime = _getTime()
function appTime()
return _getTime() - initialTime
end
end
以上是关于用lua测量经过的时间(+love2D)的主要内容,如果未能解决你的问题,请参考以下文章