【发布时间】:2014-04-20 18:47:49
【问题描述】:
我知道有很多主题可以找到代码的经过时间,并且我已经阅读了很多,但我真的很困惑我决定使用高分辨率时钟并运行此代码以查看时钟每秒滴答的次数
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 另一个问题是我想测量一个问题的计算时间,我不确定我应该测量哪个(系统时间、用户时间或实时)? 提前谢谢你
【问题讨论】:
-
这个问题真的很紧急,我不是c++高级,请指导我你的明确答案。
-
我不确定你在问什么。你显示的内容works。
-
我省略了代码的主要部分,提到的部分是计时部分,我要求进行基准测试和测量计算时间我应该使用高分辨率时钟吗?我准备的代码是0,而代码是2000多行?@chris
-
@IMI:请阅读我关于类似主题的帖子:stackoverflow.com/a/23116709/2724703
-
参见我上面的链接:基本上 Windows 实现(至少在 VS 2012 中)是“b0rked”。在 VS 中有多种其他方法可以测量时间。我对原始问题写了一条评论,解释了系统、用户和实时。
标签: c++ visual-c++ visual-studio-2012 benchmarking