[問題] 兩種計時方法的差別?

看板C_and_CPP (C/C++)作者 (方力偶)時間16年前 (2010/03/31 16:23), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
大家好 我在測一段程式碼的執行時間時 碰到一點問題 我用兩種方法測 第一種方法如下: (都寫在main function中) ** double timedifference; time_t start,end; time (&start); 程式碼 time (&end); timedifference = difftime (end,start); cout << timedifference << endl; ** 第二種方法是在main外定義好計時的function: ** double diffclock(clock_t clock1, clock_t clock2) { double diffticks=clock1-clock2; double diffms=(diffticks*10)/CLOCKS_PER_SEC; return diffms; } int main(){ clock_t begin=clock(); 程式碼 clock_t end=clock(); cout << diffclock(end,begin) << endl; } ** 我的問題是 用這兩種方法算出來的答案差很多 但我不曉得其中的差異在哪? 第一個方法看起來比較合理 和程式碼跑完所花的時間差不多 我猜第二個方法得到的結果 單位應該是ms 但算出來的時間和跑完程式花的時間非常不符... 不知道他算出來的時間是什麼 @@" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.101.199 ※ 編輯: leo80042 來自: 140.112.101.199 (03/31 16:28)

03/31 17:02, , 1F
我發現如果我的程式碼不做cout動作,則兩個方法算出來的
03/31 17:02, 1F

03/31 17:02, , 2F
時間是一致的,但不知道原因是什麼@@" 另外,第二個方法
03/31 17:02, 2F

03/31 17:03, , 3F
第二個方法可以準到小數點後三位...第一個方法可以嗎?
03/31 17:03, 3F

03/31 18:16, , 4F
一個是執行時間,一個是使用CPU的時間吧
03/31 18:16, 4F

04/02 08:58, , 5F
似乎是如此...感謝樓上
04/02 08:58, 5F
文章代碼(AID): #1BimQ3lu (C_and_CPP)
文章代碼(AID): #1BimQ3lu (C_and_CPP)