Chinaunix首页 | 论坛 | 博客
  • 博客访问: 315008
  • 博文数量: 82
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 490
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-13 10:58
文章分类

全部博文(82)

文章存档

2018年(2)

2017年(9)

2016年(71)

我的朋友

分类: 嵌入式

2016-09-06 17:56:42

先看一下这段代码

执行:

  1. function sleep(n)
  2.     local socket = require("socket")
  3.     socket.select(nil, nil, n)
  4. end

  5. local socket = require("socket")
  6. local o_start = os.clock()
  7. local g_start = socket.gettime()
  8. sleep(0.005)
  9. local o_end = os.clock()
  10. local g_end = socket.gettime()
  11. local o_diff = o_end - o_start
  12. local g_diff = g_end - g_start

  13. print("o_start: "..o_start)
  14. print("g_start: "..g_start)
  15. print("o_end: "..o_end)
  16. print("g_end: "..g_end)
  17. print("o_diff: "..o_diff)
  18. print("g_diff: "..g_diff)

结果:
  1. o_start: 0
  2. g_start: 1473155233.693
  3. o_end: 0
  4. g_end: 1473155233.6982
  5. o_diff: 0
  6. g_diff: 0.0051391124725342
1.sleep这个函数使用的是socke套接字,很明显这里相当于睡眠0.005秒。实践后发现,在openwrt上只能精确到毫秒,但这比使用os.execute("sleep 1")好多了。因为在openwrt上sleep只支持秒,不支持sleep 0.1之类的毫秒级别,测试centos确是支持的。

2.两个可以用来计算时间差的函数os.clock()和socket.gettime()。他们的不同之处在于os.clock()计算的是cpu在该程序中执行的时间,即进程睡眠的时间不会计算在os.clock()中。而socket.gettime()应该是获取的utc时间,它任何时间都在计数。因此要测试整个程序运行结束的时间,包括睡眠的时间的话使用socket.gettime()计算,反之使用os.clock()计算。
阅读(4341) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~