雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

淺談VC++中的內(nèi)聯(lián)

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊:

內(nèi)聯(lián)的語法

在類聲明中定義方法;
內(nèi)聯(lián)方法放在類聲明之外,但必須出現(xiàn)在頭文件中,且內(nèi)聯(lián)方法聲明中使用inline標(biāo)識(shí);
注:inline只是對(duì)編譯器的建議,是否內(nèi)聯(lián)的決定權(quán)在編譯器;

內(nèi)聯(lián)節(jié)省的開銷

函數(shù)調(diào)用開銷
調(diào)用間優(yōu)化 優(yōu)秀的編譯器可是內(nèi)聯(lián)方法的邊界難以區(qū)分(將代碼內(nèi)聯(lián)后,對(duì)代碼進(jìn)行重新排列)

內(nèi)聯(lián)帶來的問題

代碼膨脹(空間開銷)
由于代碼膨脹帶來的頁面緩存命中率下降
編譯時(shí)間增加
修改文件后相關(guān)文件都需要重新編譯;
由于函數(shù)邊界模糊,該內(nèi)聯(lián)函數(shù)遇到問題后不好排查;

內(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)選擇性內(nèi)聯(lián);
超過20行,重寫方法,體現(xiàn)出快速路徑并將其內(nèi)聯(lián);

內(nèi)聯(lián)的技巧

將內(nèi)聯(lián)工作放到開發(fā)周期后期
使用條件內(nèi)聯(lián),通過宏和編譯選項(xiàng)的技巧控制在開發(fā)初期不內(nèi)聯(lián),而到開發(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)幾乎沒有調(diào)用返回的性能損失(無須在調(diào)用時(shí)存儲(chǔ)就的寄存器內(nèi)容),所有,這種體系結(jié)構(gòu)的內(nèi)聯(lián)效果甚微,一般不用考慮內(nèi)聯(lián);

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

上一篇:C++ 自定義控件的移植問題

欄    目:C語言

下一篇:C++改變編程入口為main函數(shù)

本文標(biāo)題:淺談VC++中的內(nèi)聯(lián)

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3020.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有