Re: [問題] unix下 c++程式 CLOCKS_PER_SEC 與CLK_ …
※ 引述《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
02/15 16:31, 1F
→
02/15 16:32, , 2F
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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 7 之 7 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章