最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

3 構(gòu)造函數(shù):盡量用參數(shù)列表初始化代替參數(shù),避免值傳遞初始化。

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

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

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

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

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

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

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

11 緩存:對于多次使用的計算結(jié)果及時緩存,避免重復(fù)計算。

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

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

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

15 內(nèi)存對齊:在進行網(wǎng)絡(luò)編程時,最好對網(wǎng)絡(luò)中傳送的數(shù)據(jù)快進行內(nèi)存補齊,加快網(wǎng)絡(luò)數(shù)據(jù)的讀區(qū)速度。

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

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

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

相關(guān)文章

  • C++控制臺實現(xiàn)掃雷游戲

    C++控制臺實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細介紹了C++控制臺實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • c++判斷是否為目錄的示例分享

    c++判斷是否為目錄的示例分享

    這篇文章主要介紹了c++判斷是否為目錄的示例,需要的朋友可以參考下
    2014-03-03
  • C語言實現(xiàn)車票管理系統(tǒng)

    C語言實現(xiàn)車票管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)車票管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語言實現(xiàn)父進程主動終止子進程的方法總結(jié)

    C語言實現(xiàn)父進程主動終止子進程的方法總結(jié)

    一般的情況,子進程自己運行完后,執(zhí)行exit 或者return 后,父進程wait.  waitpid收回子進程,但子進程是一個循環(huán)等待狀態(tài)不主動退出,父進程可以采用文中介紹的幾種方法,需要的朋友可以參考下
    2023-10-10
  • 老生常談c++中的靜態(tài)成員

    老生常談c++中的靜態(tài)成員

    有時候需要類的一些成員與類本身相關(guān)聯(lián),而不是與類的每個對象相關(guān)聯(lián)。比如類的所有對象都要共享的變量,這個時候我們就要用到類的靜態(tài)成員,今天通過實例代碼給大家詳細介紹,需要的朋友參考下吧
    2021-07-07
  • opencv利用霍夫變換檢測直線進行圖片校正

    opencv利用霍夫變換檢測直線進行圖片校正

    這篇文章主要為大家詳細介紹了opencv利用霍夫變換檢測直線對圖片進行校正,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 在編程語言中怎樣定義隊列及其使用(C++)

    在編程語言中怎樣定義隊列及其使用(C++)

    這篇文章主要介紹了在編程語言中怎樣定義隊列,本文主要根據(jù)c++來介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • 舉例說明自定義C++異常處理的實例

    舉例說明自定義C++異常處理的實例

    這篇文章主要介紹了舉例說明自定義C++異常處理的實例的相關(guān)資料,這里舉例說明該如何使用C++ 的異常,需要的朋友可以參考下
    2017-10-10
  • C語言實現(xiàn)K-Means算法

    C語言實現(xiàn)K-Means算法

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)K-Means算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C++ 將文件數(shù)據(jù)一次性加載進內(nèi)存實例代碼

    C++ 將文件數(shù)據(jù)一次性加載進內(nèi)存實例代碼

    這篇文章主要介紹了C++ 將文件數(shù)據(jù)一次性加載進內(nèi)存實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05

最新評論

满城县| 石景山区| 阜南县| 察隅县| 天峨县| 辽源市| 福安市| 项城市| 长宁县| 从江县| 炉霍县| 明水县| 额济纳旗| 建阳市| 商洛市| 安吉县| 咸宁市| 郎溪县| 泾川县| 宜良县| 远安县| 连平县| 浦东新区| 南陵县| 金川县| 岳阳县| 积石山| 新巴尔虎左旗| 武邑县| 汉沽区| 南靖县| 通海县| 东乌珠穆沁旗| 贡嘎县| 郁南县| 浦北县| 兴国县| 翼城县| 云安县| 奈曼旗| 黄浦区|