用于存储变量的X天历史的数据结构

时间:2013-02-24 09:21:10

标签: c#

我有一个具有当前值的变量,但是当我更改它时,它首先需要将过去的值存储在一些数据结构中,这将显示过去的X多个值。

这是对过去的值进行各种计算,例如最近值的平均值等。

我唯一的想法是为此使用队列,因为我只需要过去的X值,然后我实现了一个自动将旧值出列的FixedSizedQueue。

从那以后我发现我至少在它看起来的队列的默认实现中无法真正访问它中的随机值。但另外,如果一个人能够做到这一点,他们会很慢,需要迭代所有的值。

所以我想知道有没有办法有效地做到这一点?我能想到的另一种方法是拥有一个数组并简单地实现一些推动功能,将所有元素移动一个索引位置。但这似乎过于浪费。如果这些是唯一的两个选项,如果我每次更改数据结构中的每个值20次,那么哪一个会更好,并且大小将存储50个值?

这是一个性能非常重要的地方,因为每次变量“记录”在迭代我拥有的数据时会至少改变一百万次,所以不要担心我做过早优化。谢谢,我很感激!

1 个答案:

答案 0 :(得分:3)

您正在寻找ring buffer / circular buffer

您可以找到c#实现here