[問題] 如何計算一個 function 總共做了多少運算

看板C_and_CPP作者 (*zstar.get())時間15年前 (2010/06/09 21:45), 編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 我的程式中有一個 function 是很常被使用的 ex. 影像播放軟體裡的 IDCT 想要評估這個 function 每執行一次,執行了多少個運算 例如浮點運算 100 個,整數運算 80 個 請問有什麼方法呢? 我目前的想法 1. 直接統計我所寫的 code 裡 + - * / 個數 但我擔心 compiler 有做最佳化,直接算與實際值相差太大。 2. 把 function asembly 出來,算指令數 擔心太複雜,難以 trace 不曉得大家有沒有建議的方法 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.137.29

06/09 21:57, , 1F
你的平台是?
06/09 21:57, 1F
平台是 x86 64bit, linux, gcc 但是把 C code funcion 搬到 windows 也不是難事

06/10 00:58, , 2F
Operator overloading?
06/10 00:58, 2F
這方法好像不錯~ 可是這是不是會影響 optimization 感覺這個算出來的結果,也許會比較像直接統計source code的結果~ ※ 編輯: zstar 來自: 203.73.49.118 (06/10 08:04)

06/10 09:15, , 3F
編出asm是最簡單的吧?為什麼會擔心太複雜?
06/10 09:15, 3F

06/10 11:08, , 4F
要不要直接做 profiling ? gcc -pg搭配 gprof
06/10 11:08, 4F

06/10 11:09, , 5F
gprof會給你效能測試報告,函數的執行時間、次數都會列出
06/10 11:09, 5F
文章代碼(AID): #1C3vhwRi (C_and_CPP)