C++代碼優化

      網友投稿 715 2025-03-31

      本文檔列舉了游戲服務器開發過程中應當注意的一些規范,以保證我們服務器代碼具有更高的可讀性、可維護性以及更高的穩定性和運行效率。

      1.???定義struct必須要在構造函數中對所有成員變量進行初始化。

      這樣可以確保一個對象生成時,其所有成員變量都有可知的固定的初值,而不是系統分配的初值。另外,盡量使用初始化列表的方式對復雜數據類型的成員變量進行初始化,這樣可以只調用一次拷貝構造函數,不需要調用賦值操作符,代碼更高效。

      2.???自增自減操作符在不是必要的時候全部使用前置操作符。

      ++i比i++具有更少的匯編指令,雖然編譯器優化后這兩條語句可能完全相同,但是養成良好的代碼風格也很重要。

      3.???無符號整數與0比值直接使用==判斷。

      不需要使用<=,因為無符號整數永遠不可能小于0。同樣的,判斷一個無符號整數>=0也是沒有意義的。

      4.???浮點數的比較。

      5.???使用typedef對較長的類型定義進行重命名。

      這樣可以使該類型使用地方的代碼更加有可讀性,也減少了代碼出錯的可能。

      6.???減少局部變量不必要的初始化。

      這種情況大部分是寫代碼時粗心造成的。主要是為了節省性能(個人感覺初始化還是必要的)

      7.???非基本數據類型作為函數參數不要使用值傳遞。

      非基本數據類型是指int、float、char這些C/C++基本類型之外的數據類型,比如std::string和自己定義的struct等。非基本數據類型一般是由多個基本數據類型組成的,如果值傳遞會進行大于4個字節的內存拷貝,嚴重影響效率。而函數參數無外乎有兩種情況,一種是函數內部不會改變參數的值,另一種的函數內部需要改變參數的值。前者使用const引用或者const指針,后者使用引用或指針,就能解決所有需求,因此非基本數據類型以值傳遞的形式作為函數參數是沒有必要的。另外,基本數據類型作為函數參數如果函數內部不需要改變值的話建議直接值傳遞。

      8.???類成員變量數組大小避免直接使用數字。

      定義一個常量作為數組的大小使代碼更易維護,也能減少數組越界等bug的出現幾率。

      數據結構優化

      一)????選擇合適的算法和數據結構

      1)如果固定大小,并且隨機訪問就用數組

      2) 如果數據大小不固定,并且涉及大量的插入和刪除操作,使用鏈表

      3)如果涉及海量數據,并且要求高效的查找就用map

      二)查表

      1)客戶端程序經常用到的sin cos等值可以再初始化的時候計算出(0-360度)的值保存在表里,用的時候直接使用 (空間換時間)

      運算符優化

      C++代碼優化

      1)取余用與(&)替換

      2)乘與除2的倍數可以用位移操作來替換

      3)除法可以用乘法替代

      語句優化

      一)順序語句的優化

      1)相同功能的代碼放在一個語句塊,避免出現開頭定義了一個變量

      幾百行代碼后才引用

      2)盡量多用中間變量保存代碼塊重復引用的值

      二)if swtich 語句的優化

      嵌套if把執行幾率小的判斷放在前邊

      Switch

      使用跳轉表

      switch語句執行的時候并不是和if elseif 一樣傻傻的一個一個去執行,而且把左右跳轉地址保存起來,如果是連續的只需要一個跳轉表,如果case不連續的就需要兩個挑戰表,從表A就是上邊0x4140a8地址找到實際的跳轉偏移看到了把1-3是跳轉偏移是,后邊3-100全部是04然后在存儲實際的跳轉地址0x414094+偏移找到跳轉地址,過去

      三)循環語句的優化

      1)循環展開

      4)多重循環的時候一定要注意內循環的效率,因為內循環執行的次數是最多的。

      AStyle 格式化代碼

      &AStyle

      C:\ProgramFiles (x86)\Microsoft Visual Studio 8\Common7\Tools\AStyle.exe

      -A1 -s4 -c-K -w -m0 -M80 -j -H -p -U -Y -N -k2 $(ItemDir)$(ItemFileName)$(ItemExt)

      $(ItemDir)

      C++ 數據結構

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:無代碼開發平臺的場景(無代碼開發平臺的利與弊)
      下一篇:如何在Excel中突出顯示/有條件地格式化唯一/重復的值?
      相關文章
      亚洲日韩国产精品乱| 亚洲熟女精品中文字幕| mm1313亚洲精品国产| 亚洲 欧洲 日韩 综合在线| 亚洲av日韩av高潮潮喷无码| 久久亚洲国产精品一区二区| 亚洲人JIZZ日本人| 亚洲无线观看国产精品| 国产91精品一区二区麻豆亚洲| 亚洲a无码综合a国产av中文| 亚洲精品第一国产综合亚AV| 亚洲国产成人久久一区二区三区| 亚洲熟妇AV日韩熟妇在线| 亚洲人成色4444在线观看| 亚洲人成色99999在线观看| 亚洲狠狠婷婷综合久久蜜芽| 亚洲av无码日韩av无码网站冲| 美国毛片亚洲社区在线观看| 爱情岛亚洲论坛在线观看| 亚洲国产中文v高清在线观看| 亚洲国产精品无码久久久久久曰| 国产精品亚洲一区二区三区在线观看 | 亚洲精品视频免费观看| 亚洲一区精品伊人久久伊人| 亚洲色欲一区二区三区在线观看 | 亚洲无线一二三四区手机| 亚洲日韩涩涩成人午夜私人影院| 国产亚洲精品AA片在线观看不加载 | 亚洲一欧洲中文字幕在线| 亚洲免费福利在线视频| 亚洲欧好州第一的日产suv| 久久亚洲精品成人无码| 亚洲第一街区偷拍街拍| 亚洲av麻豆aⅴ无码电影| 久久久久亚洲AV无码专区网站| 国产亚洲综合网曝门系列| 亚洲av无码国产精品色午夜字幕| 久久久亚洲欧洲日产国码aⅴ| 亚洲国产美女视频| 亚洲精品亚洲人成在线| 亚洲性日韩精品一区二区三区|