提问者:小点点

如何测量时间?[副本]


我知道有很多关于寻找代码经过时间的主题,我也读过很多,但我真的很困惑我决定使用高分辨率时钟,并运行这段代码,看看时钟每秒滴答多少次

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个答案

匿名用户

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

您可以考虑使用另一种方法,它内置在Windows API中:

查看QueryPerformanceCounterAPI,如本问题所述。