內(nèi)聯(lián)函數(shù)是為了提高程序運(yùn)行速度的一種改進(jìn)。
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的漢源網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!當(dāng)程序運(yùn)行時(shí),有時(shí)候需要重復(fù)調(diào)用一個(gè)函數(shù),但是因?yàn)橹貜?fù)調(diào)用這個(gè)函數(shù),會(huì)不斷的造成函數(shù)調(diào)用,
會(huì)不斷進(jìn)棧出棧造成cpu的消耗。
而內(nèi)聯(lián)函數(shù)是在編譯時(shí)就將這個(gè)函數(shù)邊入進(jìn)去,不用再進(jìn)行地址的跳轉(zhuǎn)。但是不可避免的產(chǎn)生了一些
內(nèi)存的消耗,所有有時(shí)候用戶在申請(qǐng)內(nèi)聯(lián)時(shí),內(nèi)聯(lián)函數(shù)過于大,編譯器不會(huì)進(jìn)行允許
例如:
#include
#include
#include
using namespace std;
int m = 10;
inline int a(int x){ return x; }//在內(nèi)聯(lián)函數(shù)中的時(shí)間為3031ms
//int a(int x){ return x;} //一般情況用了3844ms
int main(){
cout << "start" << endl;
long int sum = 0;
int istart;
istart = GetTickCount();
for (long int i = 1; i <= 100000000; i++){
sum+=a(i);
}
cout << sum << endl;
cout << GetTickCount() - istart <<"ms"<< endl;//計(jì)算運(yùn)算時(shí)間
system("pause");
return 0;
}
可以看出他們的運(yùn)行模式確實(shí)不同。
宏:
#define a(x) x //把a(bǔ)(x) 替換成x ;//注意不加區(qū)別的替換。
由運(yùn)行結(jié)果可以看出很明顯這里運(yùn)行速度遠(yuǎn)快于普通方式和內(nèi)聯(lián)方式;
但是需要注意,
#define SQUARE(x) x*x;
//#define SQUARE(x) ((x)*(x));
using namespace std;
int m ;
int main(){
m = SQUARE(1 + 3);
cout << m << endl;
system("pause");
return 0;
}
這里運(yùn)行結(jié)果為7 因?yàn)槭沁@樣計(jì)算的 1+3*1+3
所以可以改為藍(lán)字寫的
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。