c-获取程序运行时间与当前日期和时间之和,以显示时差
发布时间:2022-04-23 12:37:17 276
相关标签: # c++
#include
#include
#include
#include
unsigned long long fib(int n) {
if (n < 2)
return n;
else
return fib(n - 1) + fib(n - 2);
}
int main(int argc, char * argv[]) {
int i, n;
double total_time = 0;
n = atoi(argv[1]);
double timings[n + 1];
time_t rawtime;
struct tm *info;
char buffer[80];
struct timeval tv;
struct timezone tz;
struct tm *today;
gettimeofday(&tv,&tz);
time( &rawtime );
info = localtime( &rawtime );
today = localtime(&tv.tv_sec);
strftime(buffer,80,"%B %e, %G ", info);
printf("%s", buffer );
printf("%d:%0d:%0d.%.6ld\n",
today->tm_hour,
today->tm_min,
today->tm_sec,
tv.tv_usec
);
printf("\nFibonacci Series:");
for (i = 0; i <= n; i++) {
struct timespec start, stop;
unsigned long long res;
clock_gettime(CLOCK_REALTIME, &start);
res = fib(i);
clock_gettime(CLOCK_REALTIME, &stop);
timings[i] = ((stop.tv_sec - start.tv_sec) * 1e9 +
(stop.tv_nsec - start.tv_nsec));
printf(" %llu", res);
}
printf("\n");
printf("Time taken for each number:");
for (i = 0; i <= n; i++) {
printf(" %.0fns", timings[i]);
total_time += timings[i];
}
printf("\n");
printf("Total time: %.0fns\n\n", total_time);
printf("%s", buffer );
printf("%d:%0d:%0d.%.6ld\n",
today->tm_hour,
today->tm_min,
today->tm_sec,
tv.tv_usec
);
total_time = total_time / 1e6;
printf("%lf", total_time + tv.tv_usec);
return 0;
}
该程序根据用户输入的数量、每个序列的运行时间和总时间计算斐波那契序列。我将当前日期和时间添加到程序的顶部和底部,如下所示:
printf("%s", buffer );
printf("%d:%0d:%0d.%.6ld\n",
today->tm_hour,
today->tm_min,
today->tm_sec,
tv.tv_usec
);
我想补充一下total_time
完成的顺序显示了底部的日期和时间,这样我就可以显示时间上的差异。因为总时间是以纳秒为单位的,所以我将总时间除以1e6以转换为毫秒。然而,当我尝试添加total_time
到当前日期和时间total_time
将自身附加到当前时间的末尾。以下是我的程序的输出示例:
Total time: 19156ns
April 13, 2022 0:58:29.121991
121991.019156
如果能帮助我正确总结,我将不胜感激。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报