淺談VC++中的內(nèi)聯(lián)
內(nèi)聯(lián)的語(yǔ)法
在類(lèi)聲明中定義方法;
內(nèi)聯(lián)方法放在類(lèi)聲明之外,但必須出現(xiàn)在頭文件中,且內(nèi)聯(lián)方法聲明中使用inline標(biāo)識(shí);
注:inline只是對(duì)編譯器的建議,是否內(nèi)聯(lián)的決定權(quán)在編譯器;
內(nèi)聯(lián)節(jié)省的開(kāi)銷(xiāo)
函數(shù)調(diào)用開(kāi)銷(xiāo)
調(diào)用間優(yōu)化 優(yōu)秀的編譯器可是內(nèi)聯(lián)方法的邊界難以區(qū)分(將代碼內(nèi)聯(lián)后,對(duì)代碼進(jìn)行重新排列)
內(nèi)聯(lián)帶來(lái)的問(wèn)題
代碼膨脹(空間開(kāi)銷(xiāo))
由于代碼膨脹帶來(lái)的頁(yè)面緩存命中率下降
編譯時(shí)間增加
修改文件后相關(guān)文件都需要重新編譯;
由于函數(shù)邊界模糊,該內(nèi)聯(lián)函數(shù)遇到問(wèn)題后不好排查;
內(nèi)聯(lián)函數(shù)的建議
優(yōu)化時(shí),只針對(duì)高頻代碼內(nèi)聯(lián);
對(duì)于調(diào)用頻率高的(80%以上場(chǎng)景都會(huì)走到的路徑):
函數(shù)規(guī)模<5行:總是內(nèi)聯(lián);
5-20行,將高頻率的調(diào)用點(diǎn)選擇性?xún)?nèi)聯(lián);
超過(guò)20行,重寫(xiě)方法,體現(xiàn)出快速路徑并將其內(nèi)聯(lián);
內(nèi)聯(lián)的技巧
將內(nèi)聯(lián)工作放到開(kāi)發(fā)周期后期
使用條件內(nèi)聯(lián),通過(guò)宏和編譯選項(xiàng)的技巧控制在開(kāi)發(fā)初期不內(nèi)聯(lián),而到開(kāi)發(fā)后期再加上自定義內(nèi)聯(lián)選項(xiàng)進(jìn)行內(nèi)聯(lián);
SPARC體系結(jié)構(gòu)中的內(nèi)聯(lián)
SPARC中有充足的寄存器,在限定的調(diào)用深度范圍內(nèi)幾乎沒(méi)有調(diào)用返回的性能損失(無(wú)須在調(diào)用時(shí)存儲(chǔ)就的寄存器內(nèi)容),所有,這種體系結(jié)構(gòu)的內(nèi)聯(lián)效果甚微,一般不用考慮內(nèi)聯(lián);
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
您可能感興趣的文章
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10如何尋找數(shù)組中的第二大數(shù)
- 01-10C++大數(shù)模板(推薦)
- 01-10淺談C/C++中的static與extern關(guān)鍵字的使用詳解
- 01-10深入C/C++浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)方式詳解
- 01-10深入探討C語(yǔ)言中局部變量與全局變量在內(nèi)存中的存放位置
- 01-10深入解析C中的數(shù)值與真假
- 01-10淺談內(nèi)聯(lián)函數(shù)與宏定義的區(qū)別詳解
- 01-10探討:程序在內(nèi)存中的分配(常量,局部變量,全局變量,程序代碼)問(wèn)
- 01-10基于linux下C開(kāi)發(fā)中的幾點(diǎn)技術(shù)經(jīng)驗(yàn)總結(jié)


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫(xiě)分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫(xiě)函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載