[問題] 關於計算執行時間的問題

看板C_and_CPP作者 (文子水交)時間11年前 (2013/04/07 16:30), 編輯推噓2(209)
留言11則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) LINUX 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 不好意思想請問一下關於執行時間的問題 我爬過文找到這網址http://www.songho.ca/misc/timer/timer.html 我照上面打 本來我的想法是 int main(){ clock_t t1,t2; t1=clock(); ****我的code****** t2=clock(); cout << (double)(t2 - t1) / CLOCKS_PER_SEC * 1000 << " ms.\n"; } 可是這樣做出來的答案無論如何都是0 而我把下面改成 while(t1 == t2) t2 = clock(); 出來的答案好像就是正確的 想請問一下這是什麼原因 為什麼要加一個while這計算時間的過程才會是對的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.65.154

04/07 16:36, , 1F
最小解析度 你的程式 在他最小時間間隔內就跑完了
04/07 16:36, 1F

04/07 16:36, , 2F
時間太短
04/07 16:36, 2F

04/07 16:37, , 3F
可是這樣的話 加while讓他取不一樣的
04/07 16:37, 3F

04/07 16:37, , 4F
不就會變得取到的時間比較長嗎?
04/07 16:37, 4F

04/07 16:42, , 5F
網頁有說 加while是為了測 clock可以測的最小時間
04/07 16:42, 5F

04/07 16:42, , 6F
在這個 case 你可能需要解析度更高的 timer
04/07 16:42, 6F

04/07 21:21, , 7F
也可以把你的工作多做很多次,總時間除以總次數
04/07 21:21, 7F

04/07 21:22, , 8F
不過這個方法可能會有額外的誤差...XD
04/07 21:22, 8F

04/08 00:03, , 9F
用 rdtsc 會準嗎?
04/08 00:03, 9F

04/08 09:10, , 10F
rdtsc 在現代已被垢病。然後 while(t1==t2) 這寫法還是有
04/08 09:10, 10F

04/08 09:10, , 11F
見過,一說是開頭取得時間記的尾吧,有沒有比較準就不知道
04/08 09:10, 11F
文章代碼(AID): #1HOIwAXB (C_and_CPP)