优化链表

时间:2016-12-08 13:48:02

标签: c++ linked-list

愚蠢的问题可能 - 但是,会更快:

- 每次物品消失时,都会从链接列表中删除项目(无论该项目是什么)

- 只需将记录标记为已死并在x个时间或条件之后覆盖它。

我不会通过避免所有删除和插入而不是仅仅覆盖来减少使用cpu时间。

2 个答案:

答案 0 :(得分:0)

唯一可以找到的方法是使用分析器。

请注意,在您的问题中没有指定其他非常重要的因素。例如,如果你知道要删除哪个元素,即你有指向它的指针,或者你必须遍历链表以找到它,它会产生很大的不同。在这种情况下,由于缓存,矢量实际上可能比任何链表快几倍(取决于元素的数量)。

答案 1 :(得分:0)

覆盖会更快。如果删除涉及从堆中释放已分配的内存,那么覆盖肯定会更快。内存分配相对较慢。此外,随着时间的推移,您的列表内存将会碎片化,这可能会导致缓存未命中。即使释放回到某种内存管理器中的内存也会更慢,因为你有管理列表节点的开销。