2013-03-14 52 views
1

所以我用rusage打印出它從用戶需要多長時間,以及系統處理的指令,沿着線的東西,如何打印時間在linux

  //DO STUFF HERE 
      printf(" TOTAL TIMES: "); 
      tusage.ru_utime.tv_sec = rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec; 
+0

在linux中使用'getrusage'有什麼問題? – Art 2013-03-14 08:02:08

+0

使用'gettimeofday',參見[this](http://stackoverflow.com/questions/2150291/how-do-i-measure-a-time-interval-in-c) – 2013-03-14 08:07:10

+0

@Art相同的代碼打印0.00 in linux,但是相同的代碼在mac os中打印實際值爲什麼是這樣? – NoNameY0 2013-03-14 08:07:43

回答

1

試試這個:

#include <stdio.h> 
#include <sys/resource.h> 
int main() { 
    struct rusage rusage; 
    struct rusage tusage; 
    int i, j, r=0; 
    for (i = 0; i < 10000; i++) { 
    for (j = 1; j < 100000; j++) { 
     r = i % j + i/j; 
    } 
    } 
    getrusage(RUSAGE_SELF, &rusage); 
    printf("TOTAL TIME \n"); 
    tusage.ru_utime.tv_sec = rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec; 
    tusage.ru_utime.tv_usec = rusage.ru_utime.tv_usec + rusage.ru_stime.tv_usec; 
    tusage.ru_utime.tv_sec += tusage.ru_utime.tv_usec/1000000; 
    tusage.ru_utime.tv_usec = tusage.ru_utime.tv_usec % 1000000; 
    printf("%ld.%06ld\n", tusage.ru_utime.tv_sec, tusage.ru_utime.tv_usec); 

    return r; 
} 
+0

不,它沒有。但爲什麼在Mac上的某些東西需要很長的時間,但我所有的現實命令都顯示爲0.00 – NoNameY0 2013-03-14 08:17:16

+0

我並不真正知道,只是調用getrusage會爲我返回非零時間('0.001000')。 – perreal 2013-03-14 08:23:46