我对C++还比较陌生,我需要以毫秒为单位打印程序的执行时间,并且保留4位小数(X.XXX)- 我尝试使用
double start_s=clock();
// my program here
double stop_s=clock();
cout << "time: " << (stop_s) << endl;
我得到了0。我做错了什么?顺便说一下,我正在使用(并且必须使用,因为是学校项目)VS2010,所以chrono不是一个选项。
我对C++还比较陌生,我需要以毫秒为单位打印程序的执行时间,并且保留4位小数(X.XXX)- 我尝试使用
double start_s=clock();
// my program here
double stop_s=clock();
cout << "time: " << (stop_s) << endl;
我得到了0。我做错了什么?顺便说一下,我正在使用(并且必须使用,因为是学校项目)VS2010,所以chrono不是一个选项。
使用std::chrono::high_resolution_clock
来自头文件chrono
。
auto started = std::chrono::high_resolution_clock::now();
DoWork();
auto done = std::chrono::high_resolution_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(done-started).count();
如果你想的话,也可以将其转换为std::chrono::seconds
或std::chrono::nanoseconds
。
这是一个使用chrono
测量执行时间的教程。
编辑: 如果你的编译器不支持chrono
,那么可以看一下wget
源代码中的src/ptimer.c
。它适用于Windows和Linux,并使用本地API。
clock
还是time
,都无法达到这种精度。 - ForceBru
clock
是非常原始的。请使用std::chrono
代替。 - Mark Ransom