我是 C++ 新手,对它的库了解不多。我需要对不同的排序算法进行时间分析,为此我需要以 毫秒为单位 获取当前时间。有没有办法做到这一点?
原文由 Yasir Mustafa 发布,翻译遵循 CC BY-SA 4.0 许可协议
我是 C++ 新手,对它的库了解不多。我需要对不同的排序算法进行时间分析,为此我需要以 毫秒为单位 获取当前时间。有没有办法做到这一点?
原文由 Yasir Mustafa 发布,翻译遵循 CC BY-SA 4.0 许可协议
简单的工作示例
#include<iostream>
#include<chrono>
using namespace std;
using namespace std::chrono;
void longTask(){
for(auto i = 0; i < INT_MAX; i++){
//do something;
}
}
int main(){
auto startTime = high_resolution_clock().now();
longTask();
auto stopTime = high_resolution_clock().now();
//Warning: can't print startTime or stopTime to cout withoutcasting
//microseconds and milliseconds allowed types in duration_cast
auto duration = duration_cast<milliseconds>(stopTime - startTime);
cout << "Time take to run longTask() in milliseconds: " << duration.count();
return 0;
}
输出
以毫秒为单位运行 longTask() 的时间:5274
享受 !!
原文由 Om Sao 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答478 阅读✓ 已解决
只需使用 std::chrono 。下面的一般示例将任务“打印 1000 颗星”乘以:
您无需打印星星,而是将排序算法放在那里并进行时间测量。
不要忘记为你的编译器启用优化标志,如果你打算做一些基准测试,例如 g++ ,你需要
-O3
。这很严重,检查我没有这样做时发生了什么: 为什么 emplace_back 比 push_back 快?Ps:如果您的编译器不支持 c++11 ,那么您可以查看我的 Time Measurements (C++) 中的其他方法。
使用我的 Quicksort (C++) 的特定(玩具)示例将是:
现在的输出是:
就这么简单。基准测试快乐! =)
编辑:
从 std::chrono :
可以检查这个 epoch 和 time_point example ,它输出: