如何添加两个C++计时持续时间

hgtggwj0  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(189)

我需要得到一个被调用几百万次(或更多)的特定C函数所花费的时间的总和。我正在尝试使用Cchrono,我对它没有任何经验。在我看来,这段代码肯定会工作,但它无法编译:

#include <ctime>
#include <ratio>
#include <chrono>

    int foo() {
    
       static duration<microseconds> full_exec_time{};
       auto start_time = high_resolution_clock::now():
    
      // do a bunch of stuff
    
       auto stop_time = high_resolution_clock::now();
       auto exec_time = duration_cast<microseconds>(stop_time - start_time);
       full_exec_time += exec_time;   // problem right here
    
    }

显然,问题出在full_exec_time的递增上。我试图解释我收到的大量错误消息,chrono似乎没有一个“+=”运算符,该运算符可以处理表达式中存在的两种durations类型。这对我来说是一个惊喜,因为我会假设它们是相同的类型。无论如何,有人知道我在这里要做的事吗?这对我来说似乎很简单,它会被广泛地记录下来,但是我在任何地方都找不到任何关于它的东西。外面有很多(以及堆栈溢出时)关于将durations添加到time points,但没有太多关于将两个durations添加在一起的内容。

nbnkbykc

nbnkbykc1#

foo中的第一行使用std::chrono::microseconds代替duration<microseconds>std::chrono::duration类模板接受两种类型<class Rep, class Period>
std::chrono::microsecondsduration</*signed integer type of at least 55 bits*/, std::micro>的别名。
修复了代码中错误的分号用法:https://godbolt.org/z/7fYhq8KGW

相关问题