测量执行时间

时间:2015-03-22 16:50:45

标签: c

打印的结果始终为零(0.00),我想知道我做错了什么。 第一个函数返回开始时间,第二个函数返回最后一个时间。

 #include <sys/time.h>
 #include <time.h>

 void getTime(struct timeval begin){
    gettimeofday(&(begin), (struct timezone*) 0);
 }

 float elapTime(struct timeval begin, struct timeval end){
    return (1e+6*((end).tv_sec - (begin).tv_sec) + ((end).tv_usec - (begin).tv_usec));
 }

 int main(int argc, char **argv) {
     struct timeval begin, end;
     getTime(begin);

     printf("Time: %.2f", elapTime(begin, end));
 }

2 个答案:

答案 0 :(得分:1)

你可以这样做:

#include <time.h>
#include <stdio.h>

int main() {
  clock_t begin, end;
  int i = 1e8;

  begin = clock();
  while(i--);
  end = clock();

  printf("Time: %.2f\n", (double) (end-begin)/CLOCKS_PER_SEC);
}

clock()函数计算处理器时钟周期。将其除以CLOCKS_PER_SEC即可获得秒数。上面的代码计算将1e8迭代为0所需的时间。

答案 1 :(得分:0)

尝试使用更简单的功能:

double              floattime (void)
{
    struct timeval  t;

    if (gettimeofday (&t, (struct timezone *)NULL) == 0)
        return (double)t.tv_sec + t.tv_usec * 0.000001;
    return (0);
}

int main(int argc, char **argv) {
    double begin;
    begin = floattime();

    getchar ();
    printf("Time: %.2f", floattime () - begin);
    return 0;
 }

在计算时间执行之前不要忘记等一段时间。否则,它将始终返回0.00s。