日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
更高效的進行C++優(yōu)化

在進行C++優(yōu)化之前,首先令人頭疼的問題是C++代碼在哪里,去尋找這些代碼之前還是先對debug-version進行仔細的研究,因為debug-version中包含了許多額外的代碼。。。。

站在用戶的角度思考問題,與客戶深入溝通,找到文登網(wǎng)站設(shè)計與文登網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋文登地區(qū)。

一個debug-version可執(zhí)行體要比release-version大出40%。那些額外的代碼都是用來支持調(diào)試的,比如說符號的查找。大多數(shù)實現(xiàn)都為debug-version和release-version提供了不同的operator new以及庫函數(shù)。

而且,一個release-version的執(zhí)行體可能已經(jīng)通過多種途徑進行了C++優(yōu)化,包括不必要的臨時對象的消除,循環(huán)展開,把對象移入寄存器,內(nèi)聯(lián)等等。 另外,我們要把調(diào)試和優(yōu)化區(qū)分開來,它們是在完成不同的任務(wù)。#t#

debug-version 是用來追捕bugs以及檢查程序是否有邏輯上的問題。release-version則是用來做一些性能上的調(diào)整以及進行優(yōu)化。 下面就讓我們來看看有哪些代碼優(yōu)化技術(shù)吧:

聲明的放置
程序中變量和對象的聲明放在什么位置將會對性能產(chǎn)生顯著影響。同樣,對postfix和prefix運算符的選擇也會影響性能。這一部分我們集中討論四個問題:初始化v.s 賦值,在程序確實要使用的地方放置聲明,構(gòu)造函數(shù)的初始化列表,prefix v.s postfix運算符。

 (1) 請使用初始化而不是賦值
在C語言中只允許在一個函數(shù)體的開頭進行變量的聲明,然而在C++中聲明可以出現(xiàn)在程序的任何位置。這樣做的目的是希望把對象的聲明拖延到確實要使用它的時候再進行。這樣做可以有兩個好處:

1. 確保了對象在它被使用前不會被程序的其他部分惡意修改。如果對象在開頭就被聲明然而卻在20行以后才被使用的話,就不能做這樣的保證。
2. 使我們有機會通過用初始化取代賦值來達到性能的提升,從前聲明只能放在開頭,然而往往開始的時候我們還沒有獲得我們想要的值。

因此初始化所帶來的好處就無法被應(yīng)用。但是現(xiàn)在我們可以在我們獲得了想要的值的時候直接進行初始化,從而省去了一步。注意,或許對于基本類型來說,初始化和賦值之間可能不會有什么差異。

但是對于用戶定義的類型來說,二者就會帶來顯著的不同,因為賦值會多進行一次函數(shù)調(diào)用----operator =。因此當我們在賦值和初始化之間進行選擇的話,初始化應(yīng)該是我們的選擇。
(2) 把聲明放在合適的位置上
在一些場合,通過移動聲明到合適的位置所帶來的性能提升應(yīng)該引起我們足夠的重視。例如:

 
 
 
  1. bool is_C_Needed(); 
  2. void use() 
  3. C c1; 
  4. if (is_C_Needed() == false) 
  5. return; //c1 was not needed 
  6. //use c1 here 
  7. return; 

上面這段代碼中對象c1即使在有可能不使用它的情況下也會被創(chuàng)建,這樣我們就會為它付出不必要的花費,有可能你會說一個對象c1能浪費多少時間,但是如果是這種情況呢:C c1[1000];我想就不是說浪費就浪費了。但C++優(yōu)化之后的情況:

 
 
 
  1. void use() 
  2. if (is_C_Needed() == false) 
  3. return; //c1 was not needed 
  4. C c1; //moved from the block's beginning 
  5. //use c1 here 
  6. return; 

怎么樣,程序的性能是不是已經(jīng)得到很大的改善了呢?因此請仔細分析你的代碼,把聲明放在合適的位置上,它所帶來的好處是你難以想象的。


本文題目:更高效的進行C++優(yōu)化
文章網(wǎng)址:http://m.5511xx.com/article/dpesosh.html