[問題] VC 測時失敗

看板C_and_CPP作者 (藍影)時間14年前 (2011/05/10 15:43), 編輯推噓2(2012)
留言14則, 5人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC2008 / VC2010 程式碼(Code):(請善用置底文網頁, 記得排版) 我寫了一份程式碼欲做測時,為簡化說明, 寫了一份 demo code 引出問題 (重點不在演算法) #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 情況下進行測時? 謝謝各位! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.73.222

05/10 15:54, , 1F
volatile ?
05/10 15:54, 1F

05/10 16:05, , 2F
cnt=%d 對應t2-t1 td=%d對應啥?
05/10 16:05, 2F

05/10 16:07, , 3F
謝謝 legnaleurc!! 真的解決了.太感激了!
05/10 16:07, 3F

05/10 16:07, , 4F
@sosokill: 抱歉,我這裡key錯,但真不影響原問題. ^^
05/10 16:07, 4F
※ 編輯: tropical72 來自: 180.177.73.222 (05/10 16:14)

05/10 16:47, , 5F
clock_t = size_t, 總覺得用 %d 來印很不合理, 但是標
05/10 16:47, 5F

05/10 16:48, , 6F
準的 %zu 在 VS 上又用不了! 囧, 我用 sleep 來測倒是
05/10 16:48, 6F

05/10 16:49, , 7F
沒有 t 大的問題說...
05/10 16:49, 7F

05/10 17:21, , 8F
vc 上, typedef clock_t long; 我的確是因 %ld 化 %d
05/10 17:21, 8F

05/10 17:22, , 9F
(純粹偷懶), typedef unsigned int size_t,故認為不同.
05/10 17:22, 9F

05/10 17:22, , 10F
修正, typedef long clock_t;
05/10 17:22, 10F

05/10 18:21, , 11F
剛也測了,跑很多次 f = pow(f, 2.0) 拖時間,如果用/O1我
05/10 18:21, 11F

05/10 18:22, , 12F
家爛電腦跑出td=437,如果用/O2,則compiler太精了,根本
05/10 18:22, 12F

05/10 18:22, , 13F
不做中間的pow計算,直接連續呼叫clock()得到td=0
05/10 18:22, 13F

05/10 19:57, , 14F
http://codepad.org/RuYiBDUx 測試碼,約5secs
05/10 19:57, 14F
文章代碼(AID): #1DoEorL- (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DoEorL- (C_and_CPP)