首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用gettimeofday()获取程序的运行时间

问如何使用gettimeofday()获取程序的运行时间
EN

Stack Overflow用户
提问于 2010-01-24 07:36:59
回答 2查看 22.6K关注 0票数 1

所以我得到了代码开头的时间,运行它,然后得到时间。

代码语言:javascript
复制
struct timeval begin, end;
gettimeofday(&begin, NULL);

//code to time

gettimeofday(&end, NULL);
//get the total number of ms that the code took:
unsigned int t = end.tv_usec - begin.tv_usec;

现在我想以“**代码需要0.007秒才能运行”或类似的形式打印出来。

所以有两个问题:

1) t似乎包含一个6000阶的值,我知道代码不需要6秒就能运行。

2)如何将t转换为双精度型,因为它是一个无符号整型?或者,有没有一种更简单的方法来打印我想要的输出?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-24 07:39:20

1)这是因为usec不是6000毫秒,而是6000微秒(6毫秒或6千分之一秒)。

2)尝试这样:将t转换为双精度值的(double)t / 1000000,然后将其除以一百万,得到秒数而不是微秒数。

票数 6
EN

Stack Overflow用户

发布于 2010-01-24 07:41:21

timeval包含两个字段,秒部分和微秒部分。

微秒(u表示希腊语字母u,代表tv_usec )是微秒。因此,当你得到6000,那就是6000微秒。tv_sec包含秒部分。

要获得想要作为双精度值的值,请使用以下代码:

代码语言:javascript
复制
double elapsed = (end.tv_sec - begin.tv_sec) + 
              ((end.tv_usec - begin.tv_usec)/1000000.0);

请确保在计算中包括tv_sec部件。gettimeofday返回当前时间,所以当秒数递增时,微秒将回到0,如果在代码运行时发生这种情况,并且您在计算中没有使用tv_sec,那么您将得到一个负数。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2125219

复制
相关文章

相似问题

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