真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語言之編譯器優(yōu)化-創(chuàng)新互聯(lián)

C語言的編譯器會對變量和代碼進行一定的優(yōu)化,我們看下面這個例子。

公司主營業(yè)務(wù):成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出蓬萊免費做網(wǎng)站回饋大家。

int a,b,c;

a=1;

b=a;

c=b;

 這個程序正常運行的時候會這樣子:先把a指向的內(nèi)存空間內(nèi)放入1

 再把a指向的內(nèi)存空間里的數(shù)讀出來放到b指向的內(nèi)存空間,

 最后再把b指向的內(nèi)存空間里的數(shù)讀出來放到c指向的內(nèi)存空間里。

然而編譯器要對這個程序進行一定的優(yōu)化,編譯的時候,直接把1放入三個內(nèi)存空間中。

這樣子在正常運行的時候確實是好事,但是總會有一些特殊的情況發(fā)生,比如,一個中斷程序突然改變了a的值,那么會發(fā)生這樣的情況:本來b和c應(yīng)該是a改變以后的值,可是編譯器優(yōu)化以后就變成了a,b,c都是1,這就很讓人郁悶了。

 那么解決方法是,我們在定義變量的前面加個volatile這個關(guān)鍵字,比如:

volatile int a ;

 這樣子以后編譯器遇到有a參與的運算的時候就不再給你優(yōu)化了,這樣子可以保證你的程序按照你的預(yù)期進行,可是如果你大量使用volatile的話,沒有優(yōu)化,就會降低程序運行的效率。

 本來C語言的運行效率就比匯編低了不少,所以說volatile在加的時候要盡量考慮好,因為很多程序運行的時候特別注重效率。

 第二種優(yōu)化是restrict關(guān)鍵字,這個關(guān)鍵字只用來修飾指針才有用,修飾不同變量沒有任何用處。

當(dāng)你用restrict修飾的指針不會被別的東西給改變的時候,為了提高執(zhí)行的效率,就會在編譯的時候給你修改。

比如下面這個函數(shù):

int main(void)

{

  int *restrict p1 , *restrict p2 ,a;

  *p1=3;

  *p2=5;

  a=2+(*p2);

  return 0 ;

}

 這樣子以后,我們做了優(yōu)化,編譯器在編譯的時候就會直接把*p2轉(zhuǎn)換成5(因為后面沒有指令能夠?qū)⑵湫薷模灾苯佑?來代替了*p2)

 優(yōu)化有好處也有壞處,總之要謹慎使用。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


文章標(biāo)題:C語言之編譯器優(yōu)化-創(chuàng)新互聯(lián)
文章分享:http://weahome.cn/article/digscp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部