我有此函数原型(prototype)代码,用于通过迭代进行阶乘计算
如何包含一个计时器,以产生用于该函数100次循环的总时间?



我的C++知识几乎不是基础知识,因此不确定此处是否正确提及“循环”。
但是,提示我使用。

请咨询

谢谢

最佳答案

这是一些时序逻辑的正确C++ 11版本:

using namespace std;
using namespace chrono;

auto start_time = system_clock::now();

// your loop goes here:
for (unsigned long i=number; i>=1; i--) result *=i;

auto end_time = system_clock::now();
auto durationInMicroSeconds = duration_cast<microseconds>(end_time - start_time);
cout << "Looping " << number << " times took " << durationInMicroSeconds << "microseconds" << endl;

仅出于体育用途,这是一个基于RAII的简单变体:
class Timer {
  public:
    explicit Timer(const string& name)
    : name_(name)
    , start_time_(system_clock::now()) {
    }
    ~Timer() {
      auto end_time = system_clock::now();
      auto durationInMicroSeconds = duration_cast<microseconds>(end_time - start_time);
      cout << "Timer: " << name << " took " << durationInMicroSeconds << "microseconds" << endl;
    }
  private:
    string name_;
    system_clock::time_point start_time_;
};

当然,这是更多的代码,但是一旦有了,就可以相当有效地重用它:
{
  Timer timer("loops");
  // your loop goes here:
  for (unsigned long i=number; i>=1; i--) result *=i;
}

关于c++ - 如何记录C++重复迭代功能的总时序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22316169/

10-13 05:38