精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

這么多性能調優工具,看看你知道幾個?

開發 開發工具
我們CPP優化系列正式開始!今天的文章里,我會介紹一些常用的工具,幫助大家找到代碼的“壞味道”(潛在的坑),進而提升代碼質量。

[[381941]]

本文轉載自微信公眾號「程序喵大人」,作者程序喵大人。轉載本文請聯系程序喵大人公眾號。

大家好,我是程序喵,雖然假期都快過去了,有很多朋友問程序喵怎么沒更文呢?是不是偷懶了!其實我這幾天沒閑著,一直在整理學習資料,昨晚終于完成了,估計這兩天會跟大家見面。

 

好了,我們CPP優化系列正式開始!今天的文章里,我會介紹一些常用的工具,幫助大家找到代碼的“壞味道”(潛在的坑),進而提升代碼質量。

那到底什么樣的代碼才算是高質量代碼呢?

對此我整理了一份腦圖:

 

如何能夠提升代碼質量呢,除了我們自身過硬的編碼能力,還需要制定代碼檢查流程,一般代碼檢查有以下幾種方式:

 

代碼檢查要檢查的問題有:

 

腦圖中有一些代碼度量指標,它用于量化代碼質量:

  • 如果代碼的圈復雜度或認知復雜度過大,可能函數本身實現的過于復雜,或可能因為架構設計過于復雜,導致函數過于復雜。
  • 如果函數嵌套過深,說明函數很可能出錯,需要仔細進⾏⼈⼯評審,并且函數可能需要重構。
  • 如果模塊的扇入過大,說明模塊可能是公共模塊,需要⼈⼯評審接⼝是否是穩定的,或模塊承擔過多職責,可以考慮遵循單⼀職責,分解模塊的職責。
  • 如果模塊的扇出過大,說明該模塊依賴多個模塊,可以考慮把被依賴的多個模塊合并為⼀個模塊,重構依賴的接⼝。
  • 如果類的繼承樹過深,考慮在繼承樹的深度上是否有新的變化⽅向,考慮提出新的策略類,或其他設計模式來優化繼承樹。
  • 如果子類過多,檢查⼦類的實現中共同的地⽅,先考慮提出公共的中間⼦類,檢查是否可以通過橋接模式、裝飾模式、組合模式等結構型模式重構代碼。

上面腦圖所說的需要檢查的各種問題中,代碼和需求背離問題與代碼是否符合設計問題需要人工評審,成本較高,其它問題可以通過工具來檢測。

檢測工具主要分為靜態代碼分析工具和動態代碼檢測工具。

靜態代碼分析工具主要用于靜態代碼分析,關于靜態代碼分析,它能夠根據規則幫助檢查代碼缺陷,然而,對于檢查規則能夠覆蓋的代碼,工具能夠工作的挺好,但對于規則沒有覆蓋的代碼,它卻無能為力,而且可能存在誤報問題。

靜態代碼分析是保證代碼質量的重要手段,據說軟件開發中大概30%-70%的代碼邏輯設計和編碼缺陷都可以通過靜態代碼分析來發現和修復。它會掃描程序代碼,找出代碼中隱藏的錯誤,如參數不匹配、有歧義的嵌套語句、錯誤的遞歸、非法計算、空指針問題、越界問題、未初始化問題、內存泄漏問題等。

靜態代碼分析工具的優勢有:

  • 自動執行靜態代碼分析,快速定位代碼隱藏錯誤和缺陷
  • 幫助代碼設計人員更專注于分析和解決代碼設計缺陷
  • 減少在代碼人工檢查上花費的時間,提高軟件可靠性并節省開發成本

舉例如下:

代碼規范檢查:由于拷貝粘貼造成兩個分支的代碼完全相同

  1. void func(int inint &out) { 
  2.     if (in > 1) out++; 
  3.     else out++; 
  4.     out++; 

代碼缺陷檢查:沒有用的RAII

  1. void func() { 
  2.     std::lock_guard<std::mutex>(lk); // 臨時對象,語句結束后執行析構,誤用的加鎖 
  3.     ... 

下面是一些常見的靜態代碼分析工具:

 

這里推薦一個常用的代碼質量管理平臺SonarCube,SonarQube是一個管理代碼質量的平臺(社區版免費),用于管理代碼的質量,它會從多個角度維護檢測代碼質量,通過插件形式支持多種語言的代碼質量管理和檢測。它可以安裝sonar-cxx插件,內置了一系列C/C++代碼檢查工具,還可以應用在CI/CD流程中,和Jenkins打通,可以在提交代碼后檢查代碼是否有壞味道,不符合規范的代碼就拒絕被合入master。

還有一個很好用的靜態代碼檢測工具是Facebook的infer,它最大的優勢是可以靜態檢測代碼內隱藏的內存泄漏問題,而且免費支持Android、C、OC語言。

靜態代碼分析工具可以在運行前幫助我們檢測缺陷,只有30%-70%,但不是所有缺陷,很多缺陷需要在運行時才會被發現。

其實我們還可以使用一些動態分析工具,通過動態分析工具可以準確定位問題,而且誤報率低,但這與測試用例強綁定,查找缺陷的比例與測試用例的覆蓋率有關,覆蓋率對于衡量代碼質量有很大意義。

代碼覆蓋率的意義:

  • 幫助我們找到未覆蓋部分的代碼,分析測試用例設計的是否充分,之后視情況決定是否可以補充測試用例。
  • 檢測出代碼的壞味道,提示我們修改代碼,理清代碼邏輯關系,提升代碼質量。
  • 代碼覆蓋率高不能代表代碼質量一定好,但代碼覆蓋率低,代碼質量估計不會高到哪去,可以作為我們衡量代碼質量的重要手段之一。
  •  對于沒有覆蓋到的錯誤,動態分析工具也無能為力。在實際工作中,我們可以動靜結合,多種檢查手段全都用上,可以更有效的提升代碼質量。

動態分析工具可以在程序運行時發現代碼的缺陷,例如內存問題、數據競爭、未定義行為等。

常用工具有GCC&Clang的Santizer系列:

  • Asan-Address Sanitizer:緩存區溢出,內存泄漏
  • Tsan-Thread Sanitizer:并發問題
  • Msan-Memory Sanitizer:未初始化內存
  • Ubsan-Undefined Behavior Sanitizer:未定義行為
  • 編譯選項添加fsanitize=address/memory/thread/undefined

還有Valgrind工具:

  • memchek:內存問題,包括Asan和Msan
  • helgrind:線程和并發問題
  • cachegrind、callgrind、massif:幫助進行性能優化

使用各種工具與單元測試、功能測試、系統測試結合,提高覆蓋率,可以幫助我們發現更多缺陷。

前面的多數都是代碼分析工具,下面介紹一些性能分析工具,關于性能分析工具Brendan Gregg大佬的網站介紹的很詳細,這里貼出來一張他總結的工具圖:

 

這張圖從Linux內核的各個子系統出發,匯總了對各個子系統進行性能分析時可以選擇的工具。其實還有一些好用的工具,圖里沒有提到,這里重點介紹一下:

gprof:gprof是GNU工具之一,編譯的時候,它在每個函數的出入口加入了profiling的代碼,運行時統計程序在用戶態的執行信息,可以得到每個函數的調用次數,執行時間,調用關系等信息,簡單易懂。適合于查找用戶級程序的性能瓶頸,然而對于很多耗時在內核態執行的程序,gprof不適合。

Oprofile:Oprofile也是一個開源的profiling工具,它使用硬件調試寄存器來統計信息,進行profiling的開銷比較小,而且可以對內核進行profiling。它統計的信息非常多,可以得到cache的缺失率,memory的訪存信息,分支預測錯誤率等等,這些信息gprof得不到,但是對于函數調用次數,它無能為力。

簡單來說,gprof簡單,適合于查找用戶級程序的瓶頸,而Oprofile稍微有點復雜,但是得到的信息更多,更適合調試系統軟件。

gperftools:Google出品,值得信賴,提供整個程序的熱點分布圖,找到性能瓶頸,然后可以針對性的進行性能優化,如圖:

 

我們平時編程過程中可能很多時候都會使用某些時間API來計算函數耗時,使用方式可以看我的這篇文章:《詳細介紹下C/C++時間相關的那些函數》

那使用什么API效率更高呢,可以看下圖:

 

圖中的rdtsc使用較繁瑣而且不適用于所有平臺和編譯器,剩下的大家可以按需使用哈。

關于性能分析工具,程序喵整理了一份非常詳細的腦圖(精華全在腦圖里),以性能指標分類,不同指標使用什么工具進行分析,都在圖里,目錄如下:

 

最后,公眾號后臺回復「性能分析工具」可以獲取完整高清PDF文件~

如果喜歡這篇文章,請點贊、在看,支持一下哦~謝謝!

參考資料

 

  • https://stackoverflow.com/questions/375913/how-can-i-profile-c-code-running-on-linux
  • https://zh.wikipedia.org/wiki/%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90
  • https://www.cnblogs.com/bangerlee/archive/2012/08/30/2659435.html
  • http://www.brendangregg.com/linuxperf.html
  • https://www.cnblogs.com/youxin/p/7988479.html
  • https://www.agner.org/optimize/
  • https://zhuanlan.zhihu.com/p/141694060
  • https://www.wyyuan.com/2018/11/06/%E8%AE%A4%E7%9F%A5%E5%A4%8D%E6%9D%82%E5%BA%A6/
  • http://bitjoy.net/2017/02/07/introduction-to-performance-analysis-tools-in-linux/

 

責任編輯:武曉燕 來源: 程序喵大人
相關推薦

2019-02-28 10:37:19

開源數據庫Oracle

2020-05-20 16:54:47

數據分頁顯示函數

2019-11-06 15:01:30

大數據Hadoop技術

2019-06-27 15:54:44

大數據工具開源

2017-11-27 14:58:01

MySQL高并發優化性能調優

2021-11-19 16:54:11

Python代碼開發

2024-04-02 08:41:10

ArrayListSubList場景

2017-08-11 14:21:33

軟件開發前端框架

2023-07-17 08:21:52

漏洞版本項目

2017-07-21 08:55:13

TomcatJVM容器

2019-11-01 08:49:07

JVM監控性能

2021-09-08 22:38:56

區塊鏈公有鏈網絡

2012-06-20 11:05:47

性能調優攻略

2019-05-10 11:13:19

分析工具Java

2021-03-04 08:39:21

SparkRDD調優

2024-07-12 09:35:38

前端工具檢驗

2018-06-26 15:00:24

Docker安全風險

2018-09-27 21:53:51

綜合布線網絡

2024-02-20 08:09:51

Java 8DateUtilsDate工具類

2022-08-26 17:22:46

MySQL性能調優數據庫
點贊
收藏

51CTO技術棧公眾號

色综合一本到久久亚洲91| 开心激情综合网| 91精品国产91久久久久久黑人| 欧美另类z0zxhd电影| 日韩精品一区二区在线视频| 三级视频在线播放| 久久黄色级2电影| 久久久久久久激情视频| 久久久久久久久久久久久久久| 台湾天天综合人成在线| 亚洲3atv精品一区二区三区| 日韩免费三级| 高清毛片aaaaaaaaa片| 丝袜国产日韩另类美女| 欧美高跟鞋交xxxxxhd| 中文字幕国产综合| 永久免费精品视频| 精品视频在线免费看| av在线播放亚洲| 日本在线观看视频| 91小视频在线免费看| 91精品视频观看| 91视频在线视频| 激情av一区| 久久精品视频在线播放| 30一40一50老女人毛片| 一区二区三区在线免费看| 欧美影院午夜播放| 欧美日韩中文在线视频| 国产福利在线免费观看| 亚洲欧洲国产日本综合| 青青成人在线| 日韩资源在线| 高清不卡一区二区| 91手机视频在线观看| 日韩不卡高清视频| 午夜亚洲伦理| 2019中文字幕在线观看| 久久免费精彩视频| 中文字幕一区二区三三| 日韩在线视频二区| 国产精品www爽爽爽| 国产va免费精品观看精品视频 | 99久久久精品免费观看国产蜜| 成人深夜直播免费观看| 天天干天天插天天射| 国产午夜精品一区二区三区欧美| 久久99国产精品自在自在app| 中国1级黄色片| 成人在线免费观看网站| 亚洲性视频网址| wwwwww日本| 你懂的视频欧美| 亚洲乱码国产乱码精品精天堂| 国产51自产区| 成人亲热视频网站| www日韩在线观看| 欧美办公室脚交xxxx| 亚洲不卡av一区二区三区| 91嫩草国产丨精品入口麻豆| 国产色在线观看| 亚洲人一二三区| 一区二区三区|亚洲午夜| 国产高清av在线| 国产色产综合产在线视频| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 精品国产免费av| 蜜桃麻豆av在线| 欧美视频在线观看 亚洲欧| 日韩小视频在线播放| 国产高潮在线| 日本高清不卡aⅴ免费网站| 少妇高清精品毛片在线视频| 欧美日韩精品免费观看视完整| 色8久久精品久久久久久蜜| 热久久精品免费视频| 九七电影院97理论片久久tvb| 欧美男生操女生| 日本人dh亚洲人ⅹxx| jizz国产精品| 亚洲欧美日韩直播| 国产天堂av在线| 欧美日韩一视频区二区| 97av在线播放| 97人妻精品视频一区| 国产综合久久久久久久久久久久| 国产成人精品自拍| 男人天堂亚洲二区| ㊣最新国产の精品bt伙计久久| 草草草视频在线观看| 91美女精品| 欧美视频精品在线| 97人人模人人爽人人澡| 欧亚精品一区| 久久精品久久久久久| 激情综合网五月婷婷| 久久这里只有| 99国产超薄肉色丝袜交足的后果| 婷婷婷国产在线视频| 日韩一区有码在线| 精品无码一区二区三区在线| 福利一区和二区| 亚洲成人xxx| 人成免费在线视频| 亚洲看片免费| 成人激情视频在线播放| 亚洲欧美日韩免费| 亚洲特级片在线| 国产精品亚洲a| 北条麻妃一区二区三区在线观看| 亚洲三级 欧美三级| 欧美日韩一级大片| 免费在线观看一区二区三区| 大波视频国产精品久久| 在线免费看a| 一本色道亚洲精品aⅴ| 欧美精品色视频| 成人一级毛片| 欧美亚洲成人精品| 精品人妻一区二区三区三区四区 | 欧美一区中文字幕| www.av天天| 99精品国产在热久久| 91久久国产综合久久蜜月精品| 国产在线观看免费网站| 精品美女久久久久久免费| 无码人妻一区二区三区在线视频| 国内精品久久久久久久影视简单| 97精品国产91久久久久久| 国产丝袜视频在线观看| 国产精品丝袜黑色高跟| 凹凸国产熟女精品视频| 九九热hot精品视频在线播放| 欧美成年人网站| 一级黄色短视频| 欧美国产精品专区| 日韩手机在线观看视频| 亚洲影院天堂中文av色| 久久久久免费视频| 99在线精品视频免费观看软件 | 久久精品国产99久久6| 欧美日韩精品免费观看| 自拍偷拍亚洲视频| 亚洲国产另类 国产精品国产免费| 精品无码久久久久成人漫画| 精品在线播放免费| 亚洲一区影院| 青青久久精品| 日韩一区二区三区xxxx| 中文字幕一区二区久久人妻| 欧美激情一区二区在线| 91视频免费版污| 日本不卡二三区| 国产精品九九久久久久久久| 95在线视频| 欧美日韩大陆在线| 国产精品免费在线视频| 激情小说亚洲一区| 天天操天天干天天玩| 国产精品一区二区三区av | 精品av综合导航| 久久久久久久久久99| 成人妖精视频yjsp地址| 成 年 人 黄 色 大 片大 全| 懂色av一区二区| 欧美在线观看一区二区三区| 日韩精品系列| 欧美在线小视频| 三级在线观看免费大全| 国产91在线|亚洲| 黄色一级在线视频| 亚洲春色h网| 国产精品欧美激情在线播放| 欧美天天影院| 欧美不卡一区二区| av网站中文字幕| 国产精品久久久久久久久搜平片| 中文字幕人妻无码系列第三区| 狠狠爱成人网| 日本一区二区三区四区高清视频| 久久91视频| 欧美激情在线播放| 国产尤物视频在线| 欧美一区二区三区啪啪| 国产成人精品a视频一区| 久久噜噜亚洲综合| 免费成人黄色大片| 136国产福利精品导航网址| 日本一区二区三区www| 精品国产乱码一区二区三区| 97色在线播放视频| 777电影在线观看| 日韩欧美国产三级电影视频| 日韩精品在线免费视频| 中文字幕日韩欧美一区二区三区| 亚洲精品久久一区二区三区777| 亚洲自拍另类| 在线视频91| 婷婷亚洲精品| 91中文字幕在线| 超碰国产一区| 欧美日韩国产成人在线| 精品99又大又爽又硬少妇毛片| 91精品福利在线一区二区三区 | 羞羞的视频在线观看| 国产丝袜高跟一区| 99久久亚洲精品日本无码| 欧美日韩在线观看视频| 国精品无码一区二区三区| 91小视频在线| 天堂va欧美va亚洲va老司机| 日本人妖一区二区| 免费看一级大黄情大片| 欧美在线首页| 欧美一区二区三区四区五区六区| 日韩精品一级| 国产免费亚洲高清| 国产精品一区二区av影院萌芽| 欧美成人三级视频网站| 18免费在线视频| 亚洲欧美日韩另类| 国产91绿帽单男绿奴| 3751色影院一区二区三区| 成人免费毛片视频| 午夜亚洲国产au精品一区二区| 免费中文字幕日韩| 国产精品久久久久久亚洲毛片 | 国产欧亚日韩视频| 最近在线中文字幕| 2024亚洲男人天堂| 欧美xxxx视频| 久久五月天色综合| 日韩在线观看www| 亚洲视频一区二区三区| 爽爽视频在线观看| 亚洲精品xxx| 日本wwwxxxx| 精品成人一区二区三区四区| 国产三级自拍视频| 91.com视频| 国产精品久久久久久久一区二区| 欧洲精品视频在线观看| 亚洲精品中文字幕乱码三区91| 婷婷国产在线综合| 精品成人久久久| 亚洲成人动漫在线观看| 久久精品无码人妻| 亚洲在线成人精品| 久久久久久久久久久网| 亚洲综合一区在线| 国产精品白浆一区二小说| 亚洲国产精品自拍| 久久精品无码人妻| 欧美日韩国内自拍| 人妻 日韩精品 中文字幕| 欧美日韩免费在线观看| 黑人一级大毛片| 色婷婷av一区二区三区之一色屋| 天干夜夜爽爽日日日日| 欧美四级电影网| 一级片在线免费观看视频| 欧美电影一区二区| 国产成人三级在线播放| 精品国产乱码久久久久久1区2区 | 91在线公开视频| 91精品国产综合久久久久久久久久 | 波多野结衣福利| 国产亚洲精品中文字幕| 久久久精品成人| 亚洲日本一区二区三区| 国产精品99精品无码视| 色综合天天性综合| 在线黄色av网站| 日韩精品在线一区二区| 五月色婷婷综合| 中文字幕不卡av| 中文字幕免费高清电视剧网站在线观看 | 黄色精品网站| 久久久久久久激情| 老司机午夜精品| 成年人小视频在线观看| 91网址在线看| fc2ppv在线播放| 午夜一区二区三区在线观看| 国产又粗又猛又黄视频| 91精品国产91久久综合桃花| 亚洲 欧美 激情 另类| 尤物九九久久国产精品的分类| 免费av毛片在线看| 国模私拍一区二区三区| 99久久综合国产精品二区| 超碰97网站| 国产成人手机高清在线观看网站| 樱花www成人免费视频| 国产精品videosex极品| 欧美日韩在线成人| 国产69精品久久久久毛片| 中文字幕狠狠干| 亚洲同性gay激情无套| 日韩激情在线播放| 欧美日韩精品是欧美日韩精品| 丰满熟妇乱又伦| 永久免费毛片在线播放不卡| 19禁羞羞电影院在线观看| 国产日韩精品入口| 亚洲老女人视频免费| 久久久成人精品一区二区三区 | 日本韩国精品一区二区| 美女视频黄免费的亚洲男人天堂| 欧美电影免费观看高清完整| 99视频在线免费观看| 日本不卡二三区| 丰满少妇被猛烈进入高清播放| 国产一区二区精品久久91| 国产午夜福利一区| 精品久久久久久久久久国产| 国产av一区二区三区| 中文字幕欧美亚洲| 忘忧草在线日韩www影院| 91|九色|视频| 国产精品二区不卡| 日本成人中文字幕在线| 99re亚洲国产精品| 久久黄色小视频| 91麻豆精品国产自产在线观看一区| 欧洲成人av| 91产国在线观看动作片喷水| 综合久久成人| 日韩人妻一区二区三区蜜桃视频| 麻豆精品视频在线观看视频| 欧美三级视频网站| 欧美性色19p| 天堂а√在线8种子蜜桃视频| 欧美激情视频一区| 国产精品美女久久久久| 在线观看欧美亚洲| 美女视频黄久久| 正在播放国产对白害羞| 欧洲av在线精品| wwwxxx在线观看| 国产精品久久久久久久久久ktv| 亚洲综合福利| 黄色片一级视频| 久久精品这里都是精品| 一级做a爰片久久毛片| 亚洲美女精品成人在线视频| 中文字幕在线看片| 免费国产一区| 美女久久一区| 久久精品视频18| 精品1区2区3区| 欧美a在线看| 69174成人网| 亚洲国产91| 欧美肉大捧一进一出免费视频| 亚洲国产aⅴ天堂久久| 少妇一级淫片免费看| 97视频在线观看视频免费视频| 欧美aaaaaaaa牛牛影院| 欧美日韩在线视频一区二区三区| 91免费观看在线| 在线免费观看国产精品| 色老头一区二区三区| 精品999日本久久久影院| 欧美高清中文字幕| 91网上在线视频| 中文字幕久久久久| 久久综合亚洲社区| 嗯用力啊快一点好舒服小柔久久| 国产精品333| 欧美国产精品v| 国产视频一区二区三| 久久久爽爽爽美女图片| 香蕉视频一区二区三区| 午夜在线观看av| 亚洲精品成人天堂一二三| 欧美 日韩 国产 成人 在线| 国产成人精品一区二区在线| 欧美超碰在线| 亚洲成a人无码| 欧美午夜无遮挡| 浪潮av一区| 激情小说综合区| 蓝色福利精品导航| 麻豆一区二区三区精品视频| 国产视频一区在线| 国产一区二区高清在线| 国产原创中文在线观看| 亚洲国产精品成人久久综合一区 | 美女久久久久久| 男人添女荫道口图片| 欧美国产精品一区二区三区| 亚洲欧美另类一区| 国产精品91久久| 尹人成人综合网| 三级黄色录像视频| 亚洲精品乱码久久久久久金桔影视| 国产激情欧美| 久色视频在线播放| 亚洲欧美一区二区三区极速播放|