lua 时间差功能概略

简介

在进行程序设计过程中,经常需要对某些函数、某些程序片断从开始运行到运行结束所耗费的时间进行一些量化。这种量化实际上就是计算时间差。

获取函数耗时情景如下:

lua 复制代码
function time_used() 
	--开始计时
	-- do something at here.	
	--结束计时
	--时间差:开始计时与结束计时之间所耗费的时间
	return
end

时间差计算

通常是以秒、毫秒、微妙、纳秒为单位进行时间差的计算。但是由于计算机时间系统的时钟并不是特别准确,所以得出的时间差总体来说都是有误差的。

计算时间差有很多方法,现列出其中3中:

  1. os.time方法 (精度:秒级,不推荐适用)
  2. os.clock方法 (精度:微秒级,在我电脑上不工作,不推荐使用,跨平台可能也有问题)
  3. socket.gettime方法 (精度:微妙级,推荐)
    实际上,在普通个人PC上,微秒级别的时间差都是不准确的,只能作为一个参考。毫秒级别的时间差基本上就够用了。

os.clock不好使的问题,需要进一步查明原因。

试验

试验代码中,通过调用 shell的sleep函数,分别使程序睡眠1.51秒,并分别用上述3种方法计算时间差。

lua 复制代码
local os = require("os")
local socket = require "socket"

local s = os.time()
os.execute("sleep 1.51")
local e = os.time()
print("time span (os.time): ", (e-s).." Second")                                                                                                                

local s = os.clock()
os.execute("sleep 1.51")
local e = os.clock()
print("time span (os.clock): ", (e-s) * 1000)
print("os.clock return", s, e) 

local start_time = socket.gettime()
os.execute("sleep 1.51")
local end_time= socket.gettime()
local use_time = (end_time - start_time )
print("time span (socket): "..use_time .." Second")
print("time span (socket): "..(use_time*1000) .." MilliSecond")
print("time span (socket): "..(use_time*1000000) .." MicroSecond")

运行截图:

通过运行截图,可以发现:

同样是睡眠1.51秒,

os.time计算的时间差是2秒,这是因为os.time返回时间的精度就是秒,差值必然也是秒。这个差值适用于长时间运行的程序。

os.clock不工作。

socket.gettime计算的时间差是1529851微妙,也就是1529毫秒,1.52秒。

相关推荐
右耳朵猫AI3 分钟前
JS/TS周刊2026W21 | Deno2.8RC、Angular22RC、TypeORM1.0
开发语言·javascript·ecmascript
闪电悠米8 分钟前
黑马点评-秒杀优化-02_lua_precheck
开发语言·redis·分布式·缓存·junit·wpf·lua
盈建云系统9 分钟前
外贸网站SEO怎么做?从产品关键词到询盘页面,独立站内容优化流程和费用参考
开发语言·网站搭建
Dream_ksw14 分钟前
Python多继承之super()继承问题解决
开发语言·python
迈巴赫车主21 分钟前
蓝桥杯21241灯塔java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯·动态规划
半个烧饼不加肉26 分钟前
JS 底层探究-- 调用栈(Call Stack)
开发语言·前端·javascript
弹简特38 分钟前
【Java项目-轻聊】08-用户管理模块-实现获取用户信息+头像上传+显示头像
java·开发语言·springboot
vickycheung343 分钟前
RK182X 如何在 RK3588 上进行应用测试
开发语言·php
迷藏4941 小时前
双阶段动态权重匹配系统:高效精准的工业级解决方案
java·junit
半壶清水1 小时前
用python脚本加html自建的书法字典
开发语言·python·html