返回

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

如果能帮助我正确总结,我将不胜感激。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像