【问题标题】:Measure the performance of a Redis Lua script测量 Redis Lua 脚本的性能
【发布时间】:2021-02-11 19:20:59
【问题描述】:

有没有办法衡量 Redis Lua 脚本的性能?

我有一个 lua 脚本,但我最终得到了一个稍微不同的实现,我想知道是否有任何方法可以衡量这两种实现中哪一种更快。

【问题讨论】:

  • Redis 是否在 Lua 中提供 os.clock?
  • @lhf 不,os 库在 Redis 中不可用。

标签: lua redis


【解决方案1】:

您可以调用 Redis 的 TIME 命令来执行脚本内“基准测试”。像下面这样的东西应该可以工作:

local start = redis.call('TIME')

-- your logic here

local finish = redis.call('TIME')
return finish[1]-start[1]

【讨论】:

  • 感谢您的回答。只有一条评论,在我的情况下,最好从完成/开始中减去微秒元素(返回完成 [2] - 开始 [2]),否则结果始终为 0,因为 Redis 中的执行时间非常快;)
  • 是的,我“故意”避开了 ms 的复杂性,并将其作为练习留给读者 - 快乐 Lua 天 8-)
  • ^^^ 避免为了使 sn-p 简单(因为我很懒)
【解决方案2】:

我在 cmets 中读到有人提到完成 [2]-开始 [2] 这不是一个好主意,因为 [2] 具有“当前秒内已经过去的微秒数”而不是整个时间戳(所以如果我们在不同的秒内完成,这个计算将失败。)

基于:https://redis.io/commands/TIME

要获得以微秒为单位的时间,我会这样做:

local start = redis.call('TIME')

-- your logic here

local finish = redis.call('TIME')
return (finish[1]-start[1])*1000000+(finish[2]-start[2])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2012-10-23
    • 1970-01-01
    • 2020-11-08
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多