C++程序性能優化指南

原則

  • 《More Effective C++》書中效率部分第一條就是80—20準則。說得是——大約 20%的代碼使用了 80%的程序資源;大約 20%的代碼耗用了大約 80%的運行時間;大約 20%的代碼使用了 80%的內存。因此,一些簡單的優化也能顯著提高程序性能。

  • 先完成程序功能,再考慮性能優化的事,否則會出現代碼可讀性差,過度抽象等問題。

  • 大部分的性能優化其實都是在做時間和空間的權衡,空間換時間,或者時間換空間。

  • 良好的代碼風格和代碼規範能有效的避免性能問題的出現,所以codereview也很重要。

  • 我們真正想大幅度的提升程序性能需要藉助程序分析器(profiler)尋找出程序的性能瓶頸,針對這個瓶頸進行代碼層面,算法層面,架構層面等多方面的優化。

常用優化方法

  • 空間足夠時,可以將經常需要讀取的資源,緩存在內存中。

  • 儘量減少大內存對象的構造與析構,考慮緩存暫時不用的對象,等待後續繼續使用。

  • 儘量使用C++11的右值語義,減少臨時對象的構造。

  • 簡單的功能函數可以使用內聯。少用繼承,多用組合,儘量減少繼承層級。

  • 在循環遍歷時,優化判斷條件,減少循環次數。

  • 優化線程或進程的同步方式,能用原子操作的就不用鎖。能應用層同步的就不用內核對象同步。

  • 優化堆內存的使用,如果有內存頻繁的申請與釋放,可以考慮內存池。

  • 優化線程的使用,節省系統資源與切換造成的性能損耗,線程使用頻繁的可以考慮線程池。

  • 儘量使用事件通知,謹慎使用輪循或者sleep函數。

  • 界面開發中,耗時的業務代碼不要放在UI線程中執行,使用單獨的線程去異步處理耗時業務,提高界面響應速度。

  • 經常重構、優化代碼結構。優化算法或者架構,從設計層面進行性能的優化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章