成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

更高效的進行C++優化

開發 后端
下面文章詳細的對C++優化問題做出了總結和研究,這些內容都是一些門戶網站和技術論壇找到的,中間可能有不少錯誤是我沒有挑出的,歡迎大家指正。

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

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

而且,一個release-version的執行體可能已經通過多種途徑進行了C++優化,包括不必要的臨時對象的消除,循環展開,把對象移入寄存器,內聯等等。 另外,我們要把調試和優化區分開來,它們是在完成不同的任務。#t#

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

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

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

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

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

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

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

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

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

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

【編輯推薦】

  1. 如何正確編寫C++項目開發編寫項目計劃書
  2. 對C++庫函數進行學習探索總結筆記
  3. 深度演示C++語言的種種高安全性
  4. 詳細介紹如何準確無誤的編寫C++語言
  5. 深度演示C++語言的種種高安全性
責任編輯:chenqingxiang 來源: CSDN
相關推薦

2009-12-08 16:22:06

WCF代碼

2024-12-31 00:00:15

2013-07-23 10:50:24

C程序

2016-09-18 20:19:01

LinuxVimGitHub

2021-12-10 11:46:33

無線網絡

2010-01-13 17:12:26

C++編譯器

2021-06-10 09:40:12

C++性能優化Linux

2019-04-19 08:18:37

神經網絡數據圖形

2024-03-05 09:55:00

C++右值引用開發

2010-01-28 10:33:10

C++開發程序

2010-01-20 14:35:55

C++調用

2010-01-15 18:06:20

C++引用

2017-12-21 14:36:10

大數據健身智慧

2018-05-08 14:58:07

戴爾

2016-10-27 17:49:07

群暉群暉科技NAS

2010-01-22 13:20:27

C++代碼

2010-01-25 14:43:00

C++構造函數

2010-01-22 15:53:55

C++轉換

2023-12-19 07:30:58

MySQL數據恢復數據庫

2010-01-20 09:32:30

C++類
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本欧美国产在线观看 | 性欧美精品一区二区三区在线播放 | 国产成人网| 亚洲综合精品 | 欧美日韩国产一区二区三区 | 欧美一级片在线看 | 亚洲精品视频一区 | 欧美一区二区三区在线看 | 爱爱免费视频 | 久草成人 | 精品成人69xx.xyz | 国产精品一区二区在线免费观看 | 91精品国产乱码久久久久久久久 | 91视频88av | 国产亚洲精品精品国产亚洲综合 | 午夜久久久久久久久久一区二区 | 欧美精品一区二区三区在线播放 | 亚洲欧美激情国产综合久久久 | 九一国产精品 | 午夜精品久久 | 在线免费观看色 | 国产一区二区观看 | www.99re| 亚洲欧洲在线视频 | 天天操天天舔 | 午夜精品在线 | 99免费看 | 成人自拍视频网站 | 亚洲欧美网 | 男女又爽又黄视频 | 青青青伊人 | 国产欧美日韩久久久 | 国产美女自拍视频 | 久久精品免费一区二区 | 国产精品海角社区在线观看 | 欧美二区在线 | 日本精品视频一区二区三区四区 | 国产91在线播放 | 精品久久一区二区三区 | 东京av男人的天堂 | 亚洲成人中文字幕 |