问题描述
我不是在寻找纳秒或小数点后一位的精度,但是我希望有一些不错的精度,并尽量减少结果的误差范围。
为此,我在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 (将#修改为@)