【C++】內聯函數

函數調用的實現過程:

執行函數調用指令時,程序將立即存儲該指令的內存地址
將函數參數複製到堆棧(把該函數內存塊保存一下)
跳到該函數的起點內存地址,執行該函數(可能還需要把返回值放入寄存器中)
最後跳回函數調用指令的存儲地址
由上面函數調用步驟來看,函數調用過程中的來回跳轉需要一定的時間開銷,內聯函數就是用來減少這部分的時間開銷來加快函數運行速度。

對於內聯函數,程序無須調到另一個位置來執行代碼再跳回來,內聯函數的運行速度比常規函數稍快,但代價是需要佔用更多內存空間。如果代碼執行時間很短,則內聯調用就可以節省大部分時間。但是由於這個過程相當快,儘管節省了該過程的大部分時間,但節省的時間絕對值並不大。

使用內聯函數:

函數聲明前加關鍵字inline 或 函數定義前加關鍵字inline

大部分時候我們使用後者

程序員在請求使用內聯函數的時候,編譯器並不一定會滿足這種需求,在它認爲函數中調用自己的時候不能將其作爲內聯函數(內聯函數不能遞歸)。

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