我运行以下代码来测试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 :(得分:6)
clock()
返回自程序启动执行以来 USED 的刻度数。不需要(在此特定情况下)示例来获取clock_t begin
值。
尝试打印begin
和end
值,看看它们是什么。因为等待用户输入不使用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