c+11による高精度タイマ
4196 ワード
c+11による高精度タイマ
個人ブログhttp://blog.kedixa.top c+11は処理時間用の標準ライブラリ
テストのために、最適化オプションを追加しないでください。
可能な運転結果:
処理時間の標準ライブラリは処理時間に大きな便宜を提供しており、簡単なタイマーでコードの実行効率を簡単に測定できます。timer類の実現もわかりやすく、違った需要があれば修正しやすいです。
個人ブログhttp://blog.kedixa.top c+11は処理時間用の標準ライブラリ
を追加し、あるコードの実行に使用される時間を測定するためのプログラムタイマを容易に実現することができる。timer.h
は以下の通りである#ifndef TIMER_H_
#define TIMER_H_
#include
#include
namespace kedixa
{
class timer
{
typedef std::chrono::steady_clock::time_point tp;
typedef std::chrono::duration<double> dd;
typedef std::chrono::steady_clock sc;
private:
tp _begin;
dd _span;
public:
timer()
: _begin(tp()), _span(dd(0)){}
void start()
{
_begin = sc::now();
}
void pause()
{
tp _end = sc::now();
_span += std::chrono::duration_cast(_end - _begin);
}
void stop(std::string head = std::string(),
std::string tail = std::string())
{
tp _end = sc::now();
_span += std::chrono::duration_cast (_end - _begin);
std::cout << head << _span.count() << " seconds" << tail << std::endl;
_span = dd(0);
}
~timer()
{}
};
} // namespace
#endif // TIMER_H_
main.cpp
は以下の通りである#include
#include
#include "timer.h"
using namespace std;
int main()
{
using kedixa::timer; //
timer t; //
t.start(); //
for(int i = 0; i < 1000000000; i++);
t.pause(); //
// do some other things
t.start(); //
for(int i = 0; i < 1000000000; i++);
// , ,
t.stop(string("It takes "), string("."));
return 0;
}
コンパイル:テストのために、最適化オプションを追加しないでください。
可能な運転結果:
g++ -std=c++11 main.cpp
締め括りをつける処理時間の標準ライブラリは処理時間に大きな便宜を提供しており、簡単なタイマーでコードの実行効率を簡単に測定できます。timer類の実現もわかりやすく、違った需要があれば修正しやすいです。