【问题标题】:Understanding about clock() and CLOCKS_PER_SEC in C++了解C++中的clock()和CLOCKS_PER_SEC
【发布时间】:2014-03-05 01:25:43
【问题描述】:

我对准确计时 C++ 应用程序很感兴趣。 “时间”似乎有多种定义,但为了这个问题......我对我在现实世界中依靠手表的时间感兴趣......如果这有任何意义!无论如何,在我的应用程序中,我的开始时间是这样完成的:

clock_t start = clock();
.
.
. // some statements
.
.
clock_t end = clock();
.
.
double duration = end - start;
.
.
cout << CLOCKS_PER_SEC << endl;

开始等于184000 end 等于 188000 CLOCKS_PER_SEC 等于 1000000

这是否意味着持续时间(以秒为单位)等于 4000/1000000 ?如果是这样,这是否意味着持续时间是 0.004 秒?有没有更准确的测量方法?

谢谢

【问题讨论】:

  • 我认为您正在寻找 [c++ 中的毫秒数][1] [1]:stackoverflow.com/questions/15235218/c-timer-milliseconds
  • 嗨 garakchy。我如何在这里捕获毫秒?
  • 毫秒是否真的等于 = diffticks / ( CLOCKS_PER_SEC / 1000 ); ?
  • 啊是的..如果我的数学运算正确...时钟 x(1000 毫秒/每秒时钟数)等于毫秒
  • 提高准确性的一个小方法是在调用clock() 时,代码someplace 在0.0 到1.0 个时钟周期内。通过执行clock_t start,t; t = clock(); while ((start = clock()) == t); 将减少开始时间的变化。不过,end 电话没有太多帮助。

标签: c++ c time timer clock


【解决方案1】:

试试这个以纳秒精度计算时间

struct timespec start, end;
clock_gettime(CLOCK_REALTIME,&start);
/* Do something */
clock_gettime(CLOCK_REALTIME,&end);

它返回一个值为((((unsigned64)start.tv_sec) * ((unsigned64)(1000000000L))) + ((unsigned64)(start.tv_nsec))))

如果您觉得这对您有帮助,请也参考this 链接..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 2011-09-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多