更快的访问时间,堆栈或堆?

时间:2013-08-27 15:08:50

标签: operating-system stack heap-memory

Steven Skienna的经典算法设计手册指出,链接列表在创建方面比动态数组更快。这就是Heap执行速度更快的原因吗?任何人都可以用操作系统解释它吗?

1 个答案:

答案 0 :(得分:1)

链接列表和动态数组都在堆上维护。在动态数组中插入可能会导致数组增长,而对于链接列表,它将添加到结尾。即使插入位于链接列表的中间,也需要时间进行搜索,稍后只需要一个操作即可添加指向前一个节点的指针。链接列表不需要调整相邻的内存位置。

Dynamic Array - Wiki

  

与链接列表相比,动态数组具有更快的索引   (恒定时间与线性时间)通常更快的迭代   改善参考地点; 但是,动态数组需要   在任意位置插入或删除的线性时间,因为全部   必须移动以下元素,而链接列表可以执行此操作   恒定时间。间隙缓冲区和缓冲区减轻了这个缺​​点   在下面的变体下讨论的分层矢量变体。另外,中的一个   高度分散的存储区域,可能是昂贵的或不可能的   为大型动态数组找到连续空间,而链接   列表不需要存储整个数据结构   连续。