大部分開發人員都知道棧和堆的區別, 網上搜索也有一大堆, 但是, 具體解釋棧和堆的速度差異, 找到的信息卻是寥寥無幾, 而且, 也都比較混亂. 在這里, 就我所知的情況, 大致描述一下棧為什么要比堆快的原因.
首先, 棧是本着LIFO原則的存儲機制, 對棧數據的定位相對比較快速, 而堆則是隨機分配的空間, 處理的數據比較多, 無論如何, 至少要兩次定位.
其次, 棧是由CPU提供指令支持的, 在指令的處理速度上, 對棧數據進行處理的速度自然要優於由操作系統支持的堆數據.
再者, 棧是在一級緩存中做緩存的, 而堆則是在二級緩存中, 兩者在硬件性能上差異巨大.
最后, 各語言對棧的優化支持要優於對堆的支持, 比如swift語言中, 三個字及以內的struct結構, 可以在棧中內聯, 從而達到更快的處理速度.
<a>https://www.jianshu.com/p/770d279bb531</a>