我有此函数原型(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/