為什麼棧要比堆速度要快

2022-02-04 16:22:48 字數 396 閱讀 1356

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

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

其次, 棧是由cpu提供指令支援的, 在指令的處理速度上, 對棧資料進行處理的速度自然要優於由作業系統支援的堆資料. 

再者, 棧是在一級快取中做快取的, 而堆則是在二級快取中, 兩者在硬體效能上差異巨大. 

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

為什麼major gc要比minor gc慢很多

能想到的原因有兩個 1.major gc使用的演算法複雜度比minor gc高 major gc 採取的是mark sweept或者mark conpact,minor gc也要標記,但minor gc是標記後複製。將要被複製到的survivor區又是乙個連續的記憶體區。major gc的清除可能快...

為什麼Android系統要比ios卡。

1 由於安卓系統繼承了linux的記憶體管理機制,所以導致了許多程式被快取在記憶體中,僅僅預留一小部分。這是記憶體預留閥值,如果系統開啟的程式占用的記憶體大於預留空間,會觸發系統的程序的排程策略。這樣十分消耗系統資源的操作。頻繁的申請記憶體就會拖慢系統。所以安卓系統的記憶體機制是卡頓的根源,無法改變...

為什麼我們需要位元幣(BCH)

凱恩斯曾說過,甚至一百萬個人裡都沒有乙個人能夠認識到 通程式設計客棧貨膨脹是如何摧毀本國貨幣的。基於學校對通貨膨脹的定義,公眾對通貨膨脹普遍存在誤解,無論或多或少這種情況一定是存在的。那麼你認為的通貨膨脹是什麼呢?令人驚訝的是即使是維基百科頁面也是不正確的。通貨膨脹的真正定義是貨幣 量的增加。和購買...