看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《tropical72 (藍影)》之銘言: : #include <stdio.h> : #include <time.h> : #define N 10000000 : int PrimeCnt(int x); // 計算 2~x 之質數個數, 為引出問題,是用「超暴力」法 : int main() : { : clock_t t1, t2; : int cnt; : t1 = clock(), cnt=PrimeCnt(N), t2 = clock(); : printf("cnt=%d, td=%d\n", cnt,t2-t1); : return : } : 上面的 td 永遠都是 0, : 估應是 Opt. 問題 : 把 setting [快速執行效能 (/O2)] 關掉的確可正常, : 不過這樣測時似乎沒太大意義. 所以現在測時都寫在 sub_func 裡面, : 但維護起來真的很不方便, 想請各位是否有什麼技巧能在 /O2 情況下進行測時? : 謝謝各位! 除了用volatile 我找到方法避開了: 在 main 裡多設一層 function pointer 便可 這的確也對我的整體「測試架構」(因不只寫一個 sub function) 較好 ---- 會再另發文是想再進一步探討額外問題: volatile 本身是否「有可能」會影響最佳化結果? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.73.222
akasan:不是 有可能 是會影響 05/11 14:51
tropical72:謝謝樓上解惑! 05/11 17:48