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

有關C++優化代碼問題詳細說明

開發 后端
C++層次進行優化,比在匯編層次優化具有更好的移植性,應該是在C++優化中的首選做法,于是我研究了一下XX,在這里拿出來和大家分享一下,希望對大家有用。

C++也支持面向過程的程序設計,不是一個純正的面向對象的語言,它保持了C的簡潔、高效和接近匯編語言等特點,引入了類的機制,最初的C++被稱為“帶類的C”,好了,那么就現在開始進行C++優化代碼的講解吧。

為了讓編譯器產生更好的C++優化代碼(比如說產生3DNow! 或SSE指令的代碼),必須確定浮點型變量和表達式是 float 型的。要特別注意的是,以 ";F"; 或 ";f"; 為后綴(比如:3.14f)的浮點常量才是 float 型,否則默認是 double 型。為了避免 float 型參數自動轉化為 double,請在函數聲明時使用 float。

使用32位的數據類型

編譯器有很多種,但它們都包含的典型的32位類型是:int,signed,signed int,unsigned,unsigned int,long,signed long,long int,signed long int,unsigned long,unsigned long int。盡量使用32位的數據類型,因為它們比16位的數據甚至8位的數據更有效率。 #t#

明智使用有符號整型變量

在很多情況下,你需要考慮整型變量是有符號還是無符號類型的。比如,保存一個人的體重數據時不可能出現負數,所以不需要使用有符號類型。但是,如果是要保存溫度數據,就必須使用到有符號的變量。

在許多地方,考慮是否使用有符號的變量是必要的。在一些情況下,有符號的運算比較快;但在一些情況下卻相反。比如:整型到浮點轉化時,使用大于16位的有符號整型比較快。因為x86構架中提供了從有符號整型轉化到浮點型的指令,但沒有提供從無符號整型轉化到浮點的指令??纯淳幾g器產生的匯編代碼,不好的代碼:

  1. double x; mov [foo + 4], 0   
  2.  
  3. unsigned int i; mov eax, i   
  4.  
  5. x = i; mov [foo], eax   
  6.  
  7. flid qword ptr [foo]   
  8.  
  9. fstp qword ptr [x]   

上面的代碼比較慢。不僅因為指令數目比較多,而且由于指令不能配對造成的FLID指令被延遲執行。最好用以下C++優化代碼代替,推薦的C++優化代碼:

  1. double x; mov [foo + 4], 0   
  2.  
  3. unsigned int i; mov eax, i   
  4.  
  5. x = i; mov [foo], eax   
  6.  
  7. flid qword ptr [foo]   
  8.  
  9. fstp qword ptr [x]   

在整數運算中計算商和余數時,使用無符號類型比較快。以下這段典型的代碼是編譯器產生的32位整型數除以4的代碼,不好的代碼 推薦的代碼:

  1. int i; mov eax, i   
  2.  
  3. ii = i / 4; cdq   
  4.  
  5. and edx, 3   
  6.  
  7. add eax, edx   
  8.  
  9. sar eax, 2   
  10.  
  11. mov i, eax  

在編程中,我們常常需要用到無限循環,常用的兩種方法是while (1) 和 for (;;)。這兩種方法效果完全一樣,但那一種更好呢?然我們看看它們編譯后的C++優化代碼:

  1. int i; mov eax, i   
  2.  
  3. ii = i / 4; cdq   
  4.  
  5. and edx, 3   
  6.  
  7. add eax, edx   
  8.  
  9. sar eax, 2   
  10.  
  11. mov i, eax  
責任編輯:chenqingxiang 來源: CSDN
相關推薦

2010-01-19 09:54:19

C++代碼

2010-01-11 15:47:37

C++編譯

2010-02-22 13:20:58

Python中文問題

2010-01-19 13:43:59

C++函數

2010-01-28 11:08:09

C++變量

2010-02-06 16:57:43

Android操作系統

2010-03-05 15:58:11

操作系統Android

2010-01-08 16:10:59

C++語言

2009-12-07 13:12:18

WFC端口

2009-12-09 15:40:04

Visual Stud

2010-02-23 10:14:29

Python 源代碼

2010-01-08 17:06:52

C++代碼

2009-12-28 09:26:09

ADO對象

2010-02-24 10:07:28

Python虛擬機

2010-02-04 14:41:52

Android菜單類型

2010-02-22 16:26:21

Python編輯

2014-09-16 09:57:56

INotifyProp

2009-12-07 18:06:46

WCF框架

2010-02-22 17:54:07

Python工具

2009-12-08 09:00:14

WCF線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲 欧美 日韩 在线 | 成人免费观看男女羞羞视频 | 一区二区三区日 | 在线免费观看a级片 | a免费在线 | 欧美中文在线 | 国产精品成人一区二区三区 | 国产精品久久久久久久久久免费 | 精品欧美二区 | 日韩视频一区 | 婷婷丁香在线视频 | 精品一区国产 | 亚洲国产高清在线观看 | 成人在线观看免费 | 四虎最新 | 精品乱人伦一区二区三区 | 欧美中文字幕一区二区 | 久久久久久免费毛片精品 | 99精品在线 | 毛片站| 97视频在线看| 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 一区二区在线不卡 | 成人三级视频 | 久久精品一区二区视频 | 精品国产欧美一区二区三区成人 | 中文字幕电影在线观看 | 日日摸夜夜添夜夜添特色大片 | 精品一区国产 | 在线免费激情视频 | 毛片一区二区三区 | 精品亚洲一区二区三区四区五区高 | 免费永久av | 亚洲美女在线视频 | 自拍视频在线观看 | 国产精品久久久久久久久免费软件 | 男女网站在线观看 | 国内自拍偷拍 | 日韩中文字幕在线观看 | 亚洲日本欧美日韩高观看 | 人妖videosex高潮另类 |