【问题标题】:clock() function always returning 0 [duplicate]时钟()函数总是返回 0 [重复]
【发布时间】:2012-08-12 03:55:52
【问题描述】:

可能重复:
The C clock() function just returns a zero

我运行了以下代码来测试clock() 函数的工作情况。我在 ubuntu 12.04 上工作。

#include <stdio.h>
#include <time.h>
#include <iostream>
using namespace std;


double diffclock(clock_t clock1,clock_t clock2)
{
double diffticks=clock1-clock2;
double diffms=(diffticks*10)/CLOCKS_PER_SEC;
return diffms;
}

int main()
{
string name;
int i;
clock_t begin=clock();
cout << "Hi what is your name? ";
getline(cin, name);
clock_t end=clock();
cout << "Time elapsed: " << double(diffclock(end,begin)) << " ms"<< endl;
return 0;
}

但是无论我花多少时间写下我的名字,经过的时间总是显示为 0ms。

你能告诉我是什么问题吗?

【问题讨论】:

  • 另外,使用您的代码,我得到(不正确的)非 0 结果。

标签: c++ time clock


【解决方案1】:

clock() 返回自程序开始执行以来的滴答数使用。不需要(在这个特定的)示例中获取 clock_t begin 值。

尝试打印出beginend 值,看看它们是什么。它们可能都为 0 或接近 0,因为等待用户输入不使用 CPU 时间。

无论哪种方式,我都推荐 time() 函数,因为您不需要 tick 精度。 http://www.cplusplus.com/reference/clibrary/ctime/time/

【讨论】:

  • “C 标准允许在程序开始时使用任意值”,因此使用 clock() 的绝对值是不正确的
【解决方案2】:

我认为你应该使用 time() 函数。它是这样工作的:http://asust.in/007D 您只需调用它,它就会返回自 Unix 纪元(1970 年 1 月 1 日)以来的秒数。

clock() 函数返回程序启动后的时钟滴答数。这里:http://asust.in/007E

【讨论】:

  • time() 可以设置回来。要获得经过的秒数,可以使用连续 clock_gettime(CLOCK_MONOTONIC) 调用之间的差异。
猜你喜欢
  • 2013-12-23
  • 2012-02-12
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多