如何衡量时间?

时间:2014-04-20 18:47:50

标签: c++ visual-c++ visual-studio-2012 benchmarking

我知道有很多主题可以找到代码的经过时间,而且我读了很多,但我真的很困惑我决定使用高分辨率时钟并运行此代码来查看每秒钟时钟滴答的次数

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 另一个问题是我想测量问题的计算时间,我不确定应该测量哪一个(系统时间,用户时间或实时)? 提前谢谢

1 个答案:

答案 0 :(得分:2)

这是正确的......但时钟实际上并不需要是“高分辨率”,这是实现定义的。

您可以考虑使用内置于Windows API中的备用方法:

查看QueryPerformanceCounter API,如this问题中所述。