大部分開發(fā)人員都知道棧和堆的區(qū)別, 網(wǎng)上搜索也有一大堆, 但是, 具體解釋棧和堆的速度差異, 找到的信息卻是寥寥無幾, 而且, 也都比較混亂. 在這里, 就我所知的情況, 大致描述一下棧為什么要比堆快的原因.?
首先, 棧是本著LIFO原則的存儲(chǔ)機(jī)制, 對(duì)棧數(shù)據(jù)的定位相對(duì)比較快速, 而堆則是隨機(jī)分配的空間, 處理的數(shù)據(jù)比較多, 無論如何, 至少要兩次定位.?
其次, 棧是由CPU提供指令支持的, 在指令的處理速度上, 對(duì)棧數(shù)據(jù)進(jìn)行處理的速度自然要優(yōu)于由操作系統(tǒng)支持的堆數(shù)據(jù).?
再者, 棧是在一級(jí)緩存中做緩存的, 而堆則是在二級(jí)緩存中, 兩者在硬件性能上差異巨大.?
最后, 各語言對(duì)棧的優(yōu)化支持要優(yōu)于對(duì)堆的支持, 比如swift語言中, 三個(gè)字及以內(nèi)的struct結(jié)構(gòu), 可以在棧中內(nèi)聯(lián), 從而達(dá)到更快的處理速度.?