测量执行功能的时间

时间:2018-11-11 09:17:25

标签: c++ time

我被困在衡量C ++中函数的执行时间。我尝试了clock_t clock(void),但是它只测量程序中一个功能的时间。在下面的简单示例中,我如何测量这两个功能的时间?

#include <iostream>

using namespace std;

int add(int a, int b)
{
    return a+b;
}

int subtract(int a, int b)
{
    return a - b;
}

int main()
{
    int a,b;
    cin >> a >> b;

    int c = add(a,b);
    int d = subtract(a,b);
    cout << c << " " << d << "\n";
    return 0;
}

1 个答案:

答案 0 :(得分:0)

如果要进行基准测试,则应考虑使用std::clock_t来使用elastic.domain.com,而不是使用std::chrono

time_point<high_resolution_clock>

但是,计时始终是depends on the clock resolution的不精确度量(例如,在Windows上,分辨率约为15 ms)。因此,测量时间越短,测量中的相对误差就越高。因此,如果您的函数需要15毫秒才能执行,则在Windows上,您将出现+/- 100%的误差。

提高度量可靠性的唯一方法是,通过进行大量迭代来度量更长的时间。因此,在此示例中,经过一百万次迭代,该度量的相对误差为0,0001%。

如果您可以分别对函数进行基准测试,就可以那样做。但是,如果您不能单独测量函数(例如,因为一个函数为另一个函数生成输入),则不能使用此方法。如果您想在这种情况下找到代码的瓶颈,则应该使用正确的工具: profiler

相关问题