小编lin*_*ver的帖子

C++ 使用 std::chrono 以一种很好的方式测量成员函数的执行

我想优化我的应用程序,尤其是某些功能的执行速度。

想象一下有一个带有一些成员函数的类

class Test
{
public:
    Test();
    virtual ~Test();
    int init(int arg1, double arg2);

private:
    [...]
Run Code Online (Sandbox Code Playgroud)

在我的构造函数中,我调用了这些方法之一

Test::Test()
{
    [...]
    int value = init(1, 1.2);
}
Run Code Online (Sandbox Code Playgroud)

如何init(...)在不破坏程序的情况下以一种漂亮而干净的方式测量我的方法的执行时间?

目前我使用以下代码

Test::Test()
{
    [...]
    auto start = std::chrono::high_resolution_clock::now();

    int value = init(1, 1.2);

    auto stop = std::chrono::high_resolution_clock::now();
    std::chrono::duration<double> duration = stop - start;
    std::cout << duration.count() * 1000 << "ms\n";
}
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但我认为它非常混乱,我想要一个“更干净”的解决方案。

有没有办法让某种函数接受一个成员函数和其他参数,像这样

int value = countTime(function, arg1, arg2);
Run Code Online (Sandbox Code Playgroud)

我不知道是否有可能从通过返回值function()countTime()为了不打断我的代码的工作流程。

编辑: 这是我的 TimeMeasure 类

namespace tools 
{ …
Run Code Online (Sandbox Code Playgroud)

c++ time std c++-chrono

4
推荐指数
1
解决办法
1125
查看次数

标签 统计

c++ ×1

c++-chrono ×1

std ×1

time ×1