Luaj中的os.time()以毫秒为单位返回时间,但根据lua文档,它应该以秒为单位返回时间。
在我的lua文件中的示例:
local start = os.time()
while(true) do
print(os.time() - start)
end在c++中,我收到了输出:
1
1
1
...(1 seconds passed)
2
2
2在java (使用Luaj)中,我得到了:
1
...(terminate in eclipse as fast as my finger can)
659
659
659
659喂,我在窗户上试试这个
发布于 2013-04-24 05:28:30
关于os.time()的Lua手册:
返回的值是一个数字,其意义取决于您的系统。在POSIX、Windows和其他一些系统中,这个数字计算自某些给定的启动时间(“划时代”)以来的秒数。在其他系统中,没有指定含义,时间返回的数字只能用作os.date和os.difftime的参数。
因此,任何Lua实现都可以自由地更改os.time()值的含义。
发布于 2013-04-24 11:16:23
是的,卢阿吉有个窃听器。
当调用System.currentTimeMillis() ()时,实现只返回os.time。它真的应该返回类似于(long)(System.currentTimeMillis()/1000.)的东西
还值得指出的是,luaj中的os.date和os.time处理几乎完全缺失。我建议您假设它们尚未实现。
发布于 2013-04-24 16:31:40
似乎您已经确认了这是LuaJ中的一个bug;至于解决方法,您可以用自己的版本替换os.time():
if (runningunderluaj) then
local ostime = os.time
os.time = function(...) return ostime(...)/1000 end
end其中,runningunderluaj可以检查只在luaj下设置的全局变量。如果这是不可用的,您可能可以通过比较对os.clock和os.time的调用的结果来进行自己的检查,这两个调用可以度量时间差:
local s = os.clock()
local t = os.time()
while true do
if os.clock()-s > 0.1 then break end
end
-- (at least) 100ms has passed
local runningunderluaj = os.time() - t > 1注意:有可能os.clock()也是“坏的”。我不能用luaj来测试这个..。
https://stackoverflow.com/questions/16181858
复制相似问题