Re: [問題] unix下 c++程式 CLOCKS_PER_SEC 與CLK_ …

看板C_and_CPP (C/C++)作者 (allan)時間16年前 (2009/02/15 01:33), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串7/7 (看更多)
※ 引述《WalkingIce ( 殺手哥吉拉 13)》之銘言: : ※ 引述《allanyh (allan)》之銘言: : : 不好意思,這樣我又有點迷糊了,因為我的程式不可能跑100秒啊,不到一秒鐘就run出來了 : : 到底哪個才是把clock換算成秒數 : 你要算程式跑了多久是嗎? 謝謝, 不過我的gcc compiler warning,而且出來start=-1,finish=-1結果都是0 warning: implicit declaration of function `int times(...)' warning: implicit declaration of function `int sysconf(...)' 如果是time()函數,那個只能精確到秒不是嗎?? gettimeofday可不可以解釋詳細一點.我還看不大懂如何用 謝謝您費心ㄧ再解答我的疑惑,感謝 : 1 #include <stdlib.h> : 2 #include <stdio.h> : 3 #include <time.h> : 4 : 5 int main() { : 6 clock_t start,finish; : 7 start = times(NULL); : 8 int i = 0, temp = 0; : 9 for(i = 0; i < 100000000 ; i++) { : 10 // do nothing : 11 } : 12 sleep(2); : 13 finish = times(NULL); : 14 float elapsed = (float)(finish - start) / sysconf(2); : 15 printf("Start: %d\nFinish: %d\n", start, finish); : 16 printf("Passed:%f\n", elapsed); : 17 } : $ gcc clock.c && ./a.out : Start: 1728665314 : Finish: 1728665543 : Passed:2.290000 : 或著你可以試試 gettimeofday,前幾天剛拿來用 : // Borrowed this part of code from ecore_time.c of Enlightenment project. : /* FIXME: clock_gettime() is an option... */ : /** : * Retrieves the current system time as a floating point value in seconds. : * @return The number of seconds since 12.00AM 1st January 1970. : */ : double dindin_time_get(void) { : struct timeval timev; : gettimeofday(&timev, NULL); : return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.169.231.68

02/15 16:31, , 1F
改用gettimeofday可能比較符合你的需求
02/15 16:31, 1F

02/15 16:32, , 2F
用clock(),最好是用迴圈包起來算,我記得單位是ms
02/15 16:32, 2F
感謝,解決了:)用W兄的gettimeofday的用法跟第一次 duration1 = (double)(finish - start) / CLOCKS_PER_SEC; 的時間是差不多的,所以我的SERVER除CLK_TCK似乎不是得到秒數 而是應該除CLOCKS_PER_SEC ※ 編輯: allanyh 來自: 210.240.176.185 (02/16 21:38)
文章代碼(AID): #19bm1sQL (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19bm1sQL (C_and_CPP)