clock()函数总是返回0

时间:2012-08-15 19:59:13

标签: c++ time clock

  

可能重复:
  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。

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

2 个答案:

答案 0 :(得分:6)

clock()返回自程序启动执行以来 USED 的刻度数。不需要(在此特定情况下)示例来获取clock_t begin值。

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

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

答案 1 :(得分:1)

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

clock()函数返回自程序启动以来的时钟周期数。这里:http://asust.in/007E