Re: [問題] 在linux下如何找出C程式中loop較多的區段
※ 引述《BoxsterX ()》之銘言:
: 由於要做平行程式
: 要先找出重複較多的區段再下手處理
: 請問有甚麼方法能達到這個目標
平行程式的重點在於找出執行時間(CPU time)最久的地方最佳化
不一定是重複最多的次的區段
至於要找出這些地方的工具叫做 profiler
我自己比較常用的 Intel VTune
(Linux 非商業版是免費的,可以到 http://goo.gl/cevLw 取得)
直接跑編譯過的程式就可以分析 hotspot 了
如果編譯的時候有加 -g 的話,可以直接看到哪一行跑最久,非常方便。
如果是 Intel 的 CPU 的話,更可以直接讀硬體的 event counter,
可以用來測量 L1, L2 cache miss 等等
操作方法很簡單,看著官方的 Getting start guide 就可以了
另外兩套也值得推薦的是 GNU profile (gprof) 以及 Google Profermance tool (pprof)
只是使用這兩套時都需要額外編譯程式
網路上也有相當多的資料~
以上是我的小小心得 :P 剩下請版上各位補充~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.252.104
※ 編輯: danielsig727 來自: 140.113.252.104 (04/20 19:12)
推
04/20 19:16, , 1F
04/20 19:16, 1F
推
04/20 20:06, , 2F
04/20 20:06, 2F
推
04/20 20:30, , 3F
04/20 20:30, 3F
推
04/20 20:46, , 4F
04/20 20:46, 4F
→
04/21 02:38, , 5F
04/21 02:38, 5F
推
04/22 12:12, , 6F
04/22 12:12, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):