我想打印我的函数的运行时间。出于某种原因,我的计时器总是返回0.谁能告诉我为什么?函数的运行时间
double RunningTime(clock_t time1, clock_t time2)
{
double t=time1 - time2;
double time = (t*1000)/CLOCKS_PER_SEC;
return time;
}
int main()
{
clock_t start_time = clock();
// some code.....
clock_t end_time = clock();
std::cout << "Time elapsed: " << double(RunningTime(end_time, start_time)) << " ms";
return 0;
}
我试图使用gettimeofday
,它仍然返回0。
double get_time()
{
struct timeval t;
gettimeofday(&t, NULL);
double d = t.tv_sec + (double) t.tv_usec/100000;
return d;
}
int main()
{
double time_start = get_time();
//Some code......
double time_end = get_time();
std::cout << time_end - time_start;
return 0;
}
使用chrono
也试过,它给了我各种编译错误:
- 错误:#ERROR这文件需要对即将到来的ISO C++标准C++ 0x的 编译器和库支持。此支持目前是
的实验,并且必须启用-std = C++ 0x或-std = gnu ++ 0x 编译器选项。 - 警告:'auto'会改变C++ 0x的含义;请删除它
- 错误:ISO C++禁止“T1”的声明,没有类型的错误: “的std ::时辰”还没有被宣布
错误:请求成员在“数”“(T2 - T1 )”,这是 非类型的 'INT'
INT主() { 自动T1 =标准::计时:: high_resolution_clock ::现在();
//Some code...... auto t2 = std::chrono::high_resolution_clock::now(); std::cout << "Time elapsed: " << std::chrono::duration_cast<std::chrono::milliseconds>(t2-t1).count() << " milliseconds\n"; return 0; }
考虑使用''如果你想要很好的分辨率。您可以轻松地为单位指定毫秒而不是计算它。 –
chris
在* nix系统上,尝试'gettimeofday()'获得高分辨率时间(微秒)。 – gavinb
如果你没有C++ 11,你可以考虑linux上的clock_gettime(使用'CLOCK_MONOTONIC_HR'),或'gethrtime'来处理大多数其他的UNIX变体,以及'Windows上的QueryPerformanceCounter'。 – jxh