gpt4 book ai didi

c++ - 如何记录 C++ 重复迭代函数的总时间?

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:30 24 4
gpt4 key购买 nike

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

for (unsigned long i=number; i>=1; i--) result *=i;

我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com