我很难添加两个很长的ints,本质上我想要的是使用这两个变量所花费的‘总’时间,并且我一直得到0。
struct rusage rusage;
getrusage(RUSAGE_SELF, &rusage);
printf("TOTAL TIME \n");
printf("%ld.%06ld", (rusage.ru_utime.tv_sec, rusage.ru_utime.tv_usec),
(rusage.ru_stime.tv_sec, rusage.ru_stime.tv_usec));打印出一个0。我可以打印出用户的时间,系统的时间,但我不能添加他们。请帮帮忙。
作者想要的不是只添加两个long整数,而是分别添加两个timeval结构的秒和微秒。
发布于 2013-03-14 06:52:14
类似这样的东西,但这可以写得更好:
struct rusage rusage;
struct rusage tusage;
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);发布于 2013-03-14 06:48:27
您的代码既没有显示结构,也没有显示其填充方式。但是printf参数列表将tv_usec成员传递两次给函数。您使用逗号运算符,并使用括号中的最右边成员(tv_usec)。
发布于 2013-03-14 06:53:32
你可以这样做:
#include <sys/time.h>
struct timeval StartTime, EndTime;
gettimeofday(&StartTime, NULL);
/...
// Your program
.../
gettimeofday(&EndTime, NULL);
printf ("Total time = %f seconds\n",
(double) (tv2.tv_usec - tv1.tv_usec)/1000000 +
(double) (tv2.tv_sec - tv1.tv_sec));https://stackoverflow.com/questions/15402838
复制相似问题