gpt4 book ai didi

algorithm - 计算实时事件频率的替代方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:55 25 4
gpt4 key购买 nike

我在一个有大量外部事件报告的应用程序中工作。经常使用的指标之一是作为时间函数的事件率。例如,测量一些外部异步传感器的采样率。

目前我计算此类事件频率的方法是保留一个事件时间戳队列。当事件发生时,我们将当前时间戳插入队列,然后弹出直到最旧的时间戳小于预定义的年龄。然后,事件频率与队列的大小成正比。在伪代码中,该方法通常看起来像这样:

def on_event():
var now = current_time()
time_queue.push(now)

while((now - time_queue.front()) > QUEUE_DEPTH_SECONDS):
time_queue.pop()

frequency = time_queue.size() / QUEUE_DEPTH_SECONDS

现在这种方法显然不是最优的:

  1. 内存需求和计算时间与事件发生率成正比。
  2. 必须根据预期的数据速率手动调整队列持续时间,以调整低频性能与内存要求。
  3. 频率测量的响应时间还取决于队列持续时间。较长的持续时间会降低计算的响应时间。
  4. 频率仅在新事件发生时更新。如果事件停止发生,则频率测量将保持在接收到最后一个事件时计算的值。

我很好奇是否有任何替代算法可用于计算事件发生率,以及它们在计算复杂性、空间要求、响应时间等方面的权衡。

最佳答案

https://en.wikipedia.org/wiki/Exponential_smoothing非常高效,只使用少量且有限的内存。您可以尝试对到达时间间隔进行指数平滑处理。在检索平滑的到达间隔时间时,您可以查看最后一个事件的时间,如果它大于平滑的到达间隔时间,则将其混合。

这非常不同,实际上我会从收集当前使用的时间戳样本开始,这样我就可以用它来离线测试这个或其他方案的结果。

关于algorithm - 计算实时事件频率的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58402397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com