首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中使用timeval结构需要帮助

在C中使用timeval结构需要帮助
EN

Stack Overflow用户
提问于 2011-06-30 22:31:52
回答 3查看 3.8K关注 0票数 2

我需要计算运行某个函数所需的时间,并遇到以下代码(来源:http://snippets.dzone.com/posts/show/4254 ),声明"...record &以微秒为单位输出一段代码的执行时间“

代码语言:javascript
复制
/* Put this line at the top of the file: */
#include <sys/time.h>

/* Put this right before the code you want to time: */
struct timeval timer_start, timer_end;
gettimeofday(&timer_start, NULL);

/* Put this right after the code you want to time: */
gettimeofday(&timer_end, NULL);
double timer_spent = timer_end.tv_sec - timer_start.tv_sec + (timer_end.tv_usec - timer_start.tv_usec) / 1000000.0;
printf("Time spent: %.6f\n", timer_spent);

但我个人对这段代码的经验表明,输出“时间”是以秒为单位的,而不是微秒。我需要一些关于我是对还是错的意见(我需要一劳永逸地澄清这一点)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-30 22:34:23

你是正确的。

该结构的tv_sec成员存储秒,tv_usec成员(微秒)通过除以10^6转换为秒。

票数 2
EN

Stack Overflow用户

发布于 2011-06-30 22:35:22

它提供了以秒为单位的时间差微秒(具有以下术语:(timer_end.tv_usec - timer_start.tv_usec))。所以你应该没问题:)

票数 1
EN

Stack Overflow用户

发布于 2011-06-30 22:34:35

如下所示修改:

代码语言:javascript
复制
double timer_spent = (timer_end.tv_sec - timer_start.tv_sec)*1e6 + (timer_end.tv_usec - timer_start.tv_usec);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6536407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档