打印的结果始终为零(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));
}
答案 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。