亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

總結c++性能優(yōu)化策略

 更新時間:2018年03月18日 16:42:05   作者:D_Guco  
在本篇文章中小編給大家總結了關于C++的性能優(yōu)化策略的相關知識點,對此有興趣的朋友可以參考學習下。

1 關于繼承:不可否認良好的抽象設計可以讓程序更清晰,代碼更看起來更好,但是她也是有損失的,在繼承體系中子類的創(chuàng)建會調用父類的構造函數,銷毀時會調用父類的析構函數,這種消耗會隨著繼承的深度直線上升,所以不要過度的抽象和繼承。

2 對象的復合:對象的復合和繼承很相似,當一個對象包含其他對象構造時也會引起額外的構造。關于這點可能會有很多人不解,認為這是不可避免的,舉個例子,你的一個對象中用到數組和字符串,你是選擇string和vector還是char* 和c系的數組呢,如果沒有用到c++stl庫提供的相關的高級用法,建議選擇后者。

3 構造函數:盡量用參數列表初始化代替參數,避免值傳遞初始化。

4 變量延時定義:從c系轉過來的仍保留著c的習慣,在函數第一行先把所有用到的變量都定義好,但是c是沒有運行時的消耗的,對于c++時不一樣的,對于c++對象的構造和銷毀時有消耗的,如果有大量的對象只在某個if條件的一個分支中出現,那就會有50%的情況這些消耗是可以避免的。對于這點在一個類中也是一樣的,如果成員中有成員只在某個時刻能用,就用指針代替,在構造對象時初始化成空指針,避免構造時調用他的構造函數。

5 虛函數:虛函數的底層實現是通過一個虛函數表來實現的,因此有虛函數的類構造時必須先初始化虛函數表,函數調用時也必須先找到虛函數表,然后通過指針偏移找到相應的函數,并且如果虛繼承的存在會進一步增長這個過程,它是有運行時消耗的,所以避免濫用虛函數和虛繼承,盡可能的用模版設計來代替虛繼承把運行時的消耗提前到編譯期。

6 返回值優(yōu)化: 雖然c++編譯器會選擇性的進行RVO優(yōu)化但是不是強制的,當函數有多個返回語句并且返回不通名稱的對象,函數過于復雜,返回對象沒有定義拷貝構造函數時,rvo優(yōu)化是不會執(zhí)行的,所以當函數返回一個很大的對象時在不確定rvo優(yōu)化會執(zhí)行時,盡量避免值傳遞。

7 變量的定義:在定義變量時盡量避免類型的不匹配造成臨時變量的產生。

8 內存管理:c++內存管理的大權由我們自己掌握,對于項目中要頻繁申請和釋放的對象建議用簡單的內存池來管理,可以大大的降低頻繁申請和釋放內存帶來的消耗。

9 善用內聯:內聯函數不僅僅是簡單的函數調用似的優(yōu)化,他還有一個最大的優(yōu)點就是,可以讓編譯期進行進行邊界代碼的運行環(huán)境優(yōu)化,內聯把代碼拷貝到執(zhí)行環(huán)境處避免了函數調用帶來的消耗,并且編譯期可以進行正常的編譯優(yōu)化,而函數調用是不能實現的。

10 stl :記住一點stl不是唯一的選擇,有時候也不是最好的選擇,合理選擇stl善用stl算法。

11 緩存:對于多次使用的計算結果及時緩存,避免重復計算。

12 延時計算:對于不關心計算結果的計算過程盡量延時執(zhí)行或者異步去執(zhí)行。

13 多線程:盡可能的使用無鎖式多線程開發(fā),鎖是一個非常消耗性能的東西,保證數據同步的手段有很多,voalite,原子操作都可已實現,如果迫不得已要盡量減少鎖的消耗,比如降低鎖的粒度,使用性能更高的鎖等等。

14 cpu緩存:合理的利用cpu cache可以極大的提高代碼的運行效率,比如數組中以每列遍歷和每行遍歷的區(qū)別。當然多線程環(huán)境下也要考慮它帶來的影響。

15 內存對齊:在進行網絡編程時,最好對網絡中傳送的數據快進行內存補齊,加快網絡數據的讀區(qū)速度。

16 函數參數:用const引用代替值傳遞,如果函數參數過多,可以用對象來打包參數,減少參數過多帶來的性能消耗。

17 算法: 盡可能的優(yōu)化你的算法。

18 其他優(yōu)化方案:位運算代替乘除法,前綴運算符代替后綴運算等等。

相關文章

  • VTK8.1?在?Qt5.9?環(huán)境下的配置編譯和安裝過程

    VTK8.1?在?Qt5.9?環(huán)境下的配置編譯和安裝過程

    為了實現realsense的PCL點云顯示,需要VTK支持。由于整個平臺在Qt環(huán)境實現,VTK編譯為Qt插件。整個過程并不復雜,網上的文章大多不全,自己梳理了一下,分享出來,需要的朋友可以參考下
    2022-07-07
  • C++之IO類,文件輸入輸出,string流練習題

    C++之IO類,文件輸入輸出,string流練習題

    這篇文章主要介紹了C++實現IO類的幾道數組練習題,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • C語言深入探究sizeof與整型數據存儲及數據類型取值范圍

    C語言深入探究sizeof與整型數據存儲及數據類型取值范圍

    在main函數中,sizeof是可以正常工作的,但是在自定義函數中就不可以了。所以本文將為大家詳細講解一下關鍵字sizeof、整型數據存儲深入、數據類型取值范圍深入
    2022-07-07
  • C語言實現輸入ascii碼,輸出對應的字符方式

    C語言實現輸入ascii碼,輸出對應的字符方式

    這篇文章主要介紹了C語言實現輸入ascii碼,輸出對應的字符方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C++11系列學習之類型推導

    C++11系列學習之類型推導

    這篇文章主要介紹了C++11系列學習之類型推導,文章基于C++的相關資料展開對主題的詳細內容介紹,具有一定的參考價值需要的小伙伴可參考一下
    2022-04-04
  • C++使用泛型導致的膨脹問題

    C++使用泛型導致的膨脹問題

    這篇文章主要介紹了C++使用泛型導致的膨脹,智能家居主機的嵌入式平臺上使用C++進行開發(fā)。FLASH存儲空間有限,這是必須要考慮的因素,一定要重視,下面我們一起進入文章看看詳細內容
    2021-11-11
  • C語言數據結構線性表教程示例詳解

    C語言數據結構線性表教程示例詳解

    這篇文章主要為大家介紹了C語言數據結構線性表的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • OpenCV實現幀差法檢測運動目標

    OpenCV實現幀差法檢測運動目標

    這篇文章主要為大家詳細介紹了OpenCV實現幀差法檢測運動目標,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++中的hpp文件及使用hpp文件的好處

    C++中的hpp文件及使用hpp文件的好處

    hpp文件是C++程序中一種特殊頭文件,它可以包含類的聲明和實現,詳細介紹了使用hpp文件的好處及注意事項,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • 直觀理解C語言中指向一位數組與二維數組的指針

    直觀理解C語言中指向一位數組與二維數組的指針

    這篇文章主要介紹了直觀理解C語言中指向一位數組與二維數組的指針,數組指針是C語言入門學習過程中的重點和難點,需要的朋友可以參考下
    2016-05-05

最新評論