【发布时间】:2017-12-04 15:43:04
【问题描述】:
我有一个问题,我没有找到足够有效的解决方案。我需要加速一个固定大小为 1.000.000 个元素的循环缓冲区。目前是使用单链表实现的。
目前,我已将实现更改为使用数组而不是链表。我使用写入和读取指针来避免移动数组的每个索引。我需要在我的 fifo 中进行大量查找,并且我需要从索引中删除项目(好吧,我知道它违反了 fifo 规则)。
首先,我想的是一个与 fifo 数组匹配的排序索引表。查找的复杂度为 O(log n),但每次我需要更新我的 fifo 时,我还需要更新我的索引表。这是我未能有效完成的部分(复杂性很小)。
关于跟踪 FIFO 顺序并在插入/删除/搜索操作中提供良好性能的实现的任何提示?
谢谢。
【问题讨论】:
-
如果有帮助,在 Java 中这将是一个 LinkedHashSet.. O(1) 插入/查找/删除,具有可预测的迭代顺序。如果限制为,则可以通过简单地删除第一个元素来限制大小在插入时间附近点击..
-
请出示您的代码。这会有所帮助。
-
@klutt 这有什么帮助?
-
在 95% 的情况下,(可能不工作的)代码比帖子更能说明 OP 想要实现的目标。包括可以被利用的限制。
-
好吧,恕我直言,这个问题似乎是其他 5% 的问题之一 - 解释得很好..
标签: c algorithm containers