C ++经过时间= 0

问题描述 投票:0回答:1

我在Visual Studio中有用C ++编写的代码:

    auto start = std::chrono::high_resolution_clock::now();
    result = function(-1, 1, 9999999);
    auto end = std::chrono::high_resolution_clock::now();

    double time_taken = chrono::duration_cast<chrono::microseconds>(end - start).count();
    time_taken *= 1e-6;
    std::cout << "result: " << result << "time : " << fixed << time_taken << setprecision(6) << " sec" << endl;

问题是:我在Release模式下运行代码,并且time_taken始终等于0。当我切换到Debug模式时,time_taken在1到2秒之间。我尝试了其他方法来确定时间,但time_taken始终等于0。如何解决此问题?预先感谢您的帮助!

c++ chrono
1个回答
0
投票

显然您缺乏时钟分辨率。或功能已部分或完全优化。

通常,对小型功能进行概要分析并非无关紧要。

您应该做的是多次调用它,并测量整个运行时间,然后将此时间除以调用次数。

还通过将结果存储在易失性变量中并从易失性变量中获取输入,还确保在运行时实际上已对该函数进行了完全计算。

© www.soinside.com 2019 - 2024. All rights reserved.