為什么棧要比堆速度要快


大部分開發人員都知道棧和堆的區別, 網上搜索也有一大堆, 但是, 具體解釋棧和堆的速度差異, 找到的信息卻是寥寥無幾, 而且, 也都比較混亂. 在這里, 就我所知的情況, 大致描述一下棧為什么要比堆快的原因. 

首先, 棧是本着LIFO原則的存儲機制, 對棧數據的定位相對比較快速, 而堆則是隨機分配的空間, 處理的數據比較多, 無論如何, 至少要兩次定位. 

其次, 棧是由CPU提供指令支持的, 在指令的處理速度上, 對棧數據進行處理的速度自然要優於由操作系統支持的堆數據. 

再者, 棧是在一級緩存中做緩存的, 而堆則是在二級緩存中, 兩者在硬件性能上差異巨大. 

最后, 各語言對棧的優化支持要優於對堆的支持, 比如swift語言中, 三個字及以內的struct結構, 可以在棧中內聯, 從而達到更快的處理速度. 

<a>https://www.jianshu.com/p/770d279bb531</a>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM