1

我想知道每次创建或更改某些记录时调用用 C 编写的 UDF(用户定义函数)时我应该预期的性能影响(假设 UDF代码本身不需要时间- 我将在我的自己的)。

假设我的硬件能够以 200k 写入/秒的速度运行 SSD 持久化命名空间,我是否可以期望每次运行 UDF 时至少有 50k 写入/秒?

子问题:什么可能会限制 UDF 的性能(上下文切换?)

询问的原因是 Aerospike 正在使用这些 UDF,例如用于大数据类型,但根据 AS 工作人员的说法,这些 UDF 的性能并不高(与 KVS-Ops 相比)。我的用例是使用 UDF 使 Redis 集群中的大量二级索引保持最新,从而允许更丰富的实时查询(例如 5-10 个二级索引的交集/联合)。

4

1 回答 1

3

最好的办法是自己运行测试。很难预测。但我相信你应该能够做到 50k tps。

主要是由于在调用 UDF 之前发生的内存分配,导致 UDF 的性能受到影响。如果您使用的是简单的数据类型,例如 int/string/blob,那么您的情况会更好。如果你在 UDF 中使用 list/map,它会分配更多的内存,这会影响性能。

于 2015-05-29T07:29:47.190 回答