我想打印我的函数的运行时间。出于某种原因,我的计时器总是返回 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::chrono”尚未声明
错误:请求“(t2 - t1)”中的成员“count”,它是非类类型“int”
int main() { auto t1 = std::chrono::high_resolution_clock::now();
//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; }