我知道有很多关于寻找代码经过时间的主题,我也读过很多,但我真的很困惑我决定使用高分辨率时钟,并运行这段代码,看看时钟每秒滴答多少次
cout << chrono::high_resolution_clock::period::den << endl;
output:10000000
然后我定义了开始时间和结束时间,如下所示
int main()
{
auto begin = std::chrono::high_resolution_clock::now();
.
.
.
.
auto end = std::chrono::high_resolution_clock::now();
cout<<"RUN TIME IS :"<<endl;
std::cout << std::chrono:: duration_cast <chrono:: nanoseconds>(end-begin).count() << "ns" << std::endl;
system("PAUSE");
//**********************************************************
return 0;
}
但是大多数时候输出是0,但是代码是2000多行,我浪费了很多时间,但是问题还没有解决。所以请让我知道这是一个好的方法来确定经过的时间吗?我的代码有什么问题?我正在使用VS2012另一个问题是,我想测量一个问题的计算时间,但我不确定应该测量哪一个(系统时间,用户时间还是实时时间)?事先谢谢你
这是正确的。。。但实际上,时钟并不需要“高分辨率”,这是实现中定义的。
您可以考虑使用另一种方法,它内置在Windows API中:
查看QueryPerformanceCounterAPI,如本问题所述。