淺談VC++中的內聯
內聯的語法
在類聲明中定義方法;
內聯方法放在類聲明之外,但必須出現在頭文件中,且內聯方法聲明中使用inline標識;
注:inline只是對編譯器的建議,是否內聯的決定權在編譯器;
內聯節(jié)省的開銷
函數調用開銷
調用間優(yōu)化 優(yōu)秀的編譯器可是內聯方法的邊界難以區(qū)分(將代碼內聯后,對代碼進行重新排列)
內聯帶來的問題
代碼膨脹(空間開銷)
由于代碼膨脹帶來的頁面緩存命中率下降
編譯時間增加
修改文件后相關文件都需要重新編譯;
由于函數邊界模糊,該內聯函數遇到問題后不好排查;
內聯函數的建議
優(yōu)化時,只針對高頻代碼內聯;
對于調用頻率高的(80%以上場景都會走到的路徑):
函數規(guī)模<5行:總是內聯;
5-20行,將高頻率的調用點選擇性內聯;
超過20行,重寫方法,體現出快速路徑并將其內聯;
內聯的技巧
將內聯工作放到開發(fā)周期后期
使用條件內聯,通過宏和編譯選項的技巧控制在開發(fā)初期不內聯,而到開發(fā)后期再加上自定義內聯選項進行內聯;
SPARC體系結構中的內聯
SPARC中有充足的寄存器,在限定的調用深度范圍內幾乎沒有調用返回的性能損失(無須在調用時存儲就的寄存器內容),所有,這種體系結構的內聯效果甚微,一般不用考慮內聯;
以上所述就是本文的全部內容了,希望大家能夠喜歡。
相關文章
Window10下安裝VS2022社區(qū)版的實現步驟(圖文教程)
很多和同學們在接觸c語言的時候都是使用VS,本文主要介紹了Window10下如何安裝VS2022社區(qū)版的實現步驟,具有一定的參考價值,感興趣的可以了解一下2024-02-02
C++時間戳轉化操作實例分析【涉及GMT與CST時區(qū)轉化】
這篇文章主要介紹了C++時間戳轉化操作,結合實例形式分析了C++時間戳轉換與顯示操作的原理與具體實現技巧,涉及GMT與CST時區(qū)轉化,需要的朋友可以參考下2017-05-05
C語言報錯Use of Uninitialized Variable的原因及解決方案
Use of Uninitialized Variable是C語言中常見且危險的錯誤之一,它通常在程序試圖使用一個未初始化的變量時發(fā)生,本文將詳細介紹Use of Uninitialized Variable的產生原因,提供多種解決方案,并通過實例代碼演示如何有效避免和解決此類錯誤,需要的朋友可以參考下2024-06-06

