如何以毫秒计算执行时间

8

我对C++还比较陌生,我需要以毫秒为单位打印程序的执行时间,并且保留4位小数(X.XXX)- 我尝试使用

double start_s=clock();
// my program here
double stop_s=clock();
cout << "time: " << (stop_s) << endl;

我得到了0。我做错了什么?顺便说一下,我正在使用(并且必须使用,因为是学校项目)VS2010,所以chrono不是一个选项。


2
clock 是非常原始的。请使用std::chrono代替。 - Mark Ransom
提供的代码不可能产生这个输出。 - Lightness Races in Orbit
1个回答

19

使用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::secondsstd::chrono::nanoseconds

这是一个使用chrono测量执行时间的教程


编辑: 如果你的编译器不支持chrono,那么可以看一下wget源代码中的src/ptimer.c。它适用于Windows和Linux,并使用本地API。


1
另一个例子在这里:http://www.cplusplus.com/reference/chrono/high_resolution_clock/now/ - yasouser
@yasouser,是的,我正准备包含这个链接。 - ForceBru
我正在使用VS2010,但找不到chrono头文件。这有意义吗? - Gilzy
刚刚谷歌了一下,是的,VS2010没有chrono头文件,不幸的是我的大学强制要求我使用VS 2010。 - Gilzy
@Gilzy,这不好。也许你的学院希望你学习一些Windows API?总之,无论是clock还是time,都无法达到这种精度。 - ForceBru
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接