栈访问速度快还是堆


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

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

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容