棧訪問速度快還是堆


棧的增減只需要移動棧頂寄存器。堆需要便歷鏈表,找到空的區間,可能還要處理內存碎片。

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

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

再者, 棧是在一級緩存中做緩存的, 而堆則是在二級緩存中, 兩者在硬件性能上差異巨大。棧很大機會會被虛擬機分配至物理機器的高速寄存器中存儲。

語言對棧的優化支持要優於對堆的支持。

堆分配的空間在邏輯地址上是連續的,但在物理地址上是不連續的。相鄰的兩個字節可能是在不同的物理分頁上;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章