【发布时间】:2021-02-11 19:20:59
【问题描述】:
有没有办法衡量 Redis Lua 脚本的性能?
我有一个 lua 脚本,但我最终得到了一个稍微不同的实现,我想知道是否有任何方法可以衡量这两种实现中哪一种更快。
【问题讨论】:
-
Redis 是否在 Lua 中提供 os.clock?
-
@lhf 不,
os库在 Redis 中不可用。
有没有办法衡量 Redis Lua 脚本的性能?
我有一个 lua 脚本,但我最终得到了一个稍微不同的实现,我想知道是否有任何方法可以衡量这两种实现中哪一种更快。
【问题讨论】:
os 库在 Redis 中不可用。
您可以调用 Redis 的 TIME 命令来执行脚本内“基准测试”。像下面这样的东西应该可以工作:
local start = redis.call('TIME')
-- your logic here
local finish = redis.call('TIME')
return finish[1]-start[1]
【讨论】:
我在 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])
【讨论】: