如何在C语言中获得最准确的时间?

问题描述

我不是在寻找纳秒或小数点后一位的精度,但是我希望有一些不错的精度,并尽量减少结果的误差范围。

为此,我在Mac Book Pro和秒表(即我的iPhone的秒表应用)上使用了sys / time.h,time.h,但结果却很不稳定。

我的iPhone的秒表报告:140.66秒,并且具有三个试验的两个功能,如下所示:

1. time.h gave me 136.957065 seconds —— sys/time.h gave me 140.335872 seconds
2. time.h gave me 140.822794 seconds —— sys/time.h gave me 151.858111 seconds
3. time.h gave me 146.064458 seconds —— sys/time.h gave me 162.149713 seconds

这是我的代码段:

void myExpensiveFunction()
{
   struct timeval tv1,tv2;
   gettimeofday(&tv1,NULL);
   clock_t fbegin = clock();
        
   /* expensive algorithm */
        
   clock_t fend = clock();
   gettimeofday(&tv2,NULL);

   printf("Expensive function took: %f seconds\n",(double)(fend - fbegin) / CLOCKS_PER_SEC);
   printf("Expensive function took: %f seconds\n",(double)(tv2.tv_usec - tv1.tv_usec) / 1000000 +
     (double)(tv2.tv_sec - tv1.tv_sec));
}

尽管这不是关键任务,并且我确定由于计算机本身存在一些不一致之处,但我很好奇是否应该使用或注意更好的功能或方法。出于测试和好奇的考虑,我在Linux邮件服务器上尝试了同样的操作,并获得了相似的结果,sys/time.h慢了十秒钟。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...