大部分开发人员都知道栈和堆的区别, 网上搜索也有一大堆, 但是, 具体解释栈和堆的速度差异, 找到的信息却是寥寥无几, 而且, 也都比较混乱. 在这里, 就我所知的情况, 大致描述一下栈为什么要比堆快的原因.
首先, 栈是本着LIFO原则的存储机制, 对栈数据的定位相对比较快速, 而堆则是随机分配的空间, 处理的数据比较多, 无论如何, 至少要两次定位.
其次, 栈是由CPU提供指令支持的, 在指令的处理速度上, 对栈数据进行处理的速度自然要优于由操作系统支持的堆数据.
再者, 栈是在一级缓存中做缓存的, 而堆则是在二级缓存中, 两者在硬件性能上差异巨大.
最后, 各语言对栈的优化支持要优于对堆的支持, 比如swift语言中, 三个字及以内的struct结构, 可以在栈中内联, 从而达到更快的处理速度.
网友评论