栈访问速度快还是堆


栈的增减只需要移动栈顶寄存器。堆需要便历链表,找到空的区间,可能还要处理内存碎片。

栈是本着LIFO原则的存储机制,寻址间距短,对栈数据的定位相对比较快速, 而堆则是随机分配的空间,处理的数据比较多,无论如何,至少要两次定位。

其次, 栈是由CPU提供指令支持的, 在指令的处理速度上, 对栈数据进行处理的速度自然要优于由操作系统支持的堆数据。

再者, 栈是在一级缓存中做缓存的, 而堆则是在二级缓存中, 两者在硬件性能上差异巨大。栈很大机会会被虚拟机分配至物理机器的高速寄存器中存储。

语言对栈的优化支持要优于对堆的支持。

堆分配的空间在逻辑地址上是连续的,但在物理地址上是不连续的。相邻的两个字节可能是在不同的物理分页上;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章