Declaration
template <class GetTimePolicy = detail::timeval_type> class basic_timer; typedef basic_timer<> timer;
Overview
タイマー用クラスです.オブジェクト生成時,または restart() メソッドが呼ばれた時点からの経過時間を記憶します.時刻を取得するために, UNIX 系では gettimeofday(),Windows では timeGetTime() を用いています. ただし,Windows で使用する際に CLX_USE_HIGH_PRECISION_TIMER を定義した場合, timeGetTime() の代わりに QueryPerformanceCounter() を使用します.
timer は,時刻を記憶する領域を 2 つ持っています.もう 1 つの領域は,update() メソッドが呼ばれる度に更新されていきます.そのため,elapsed() メソッドは最後に update() メソッドが呼ばれてからの経過時間,total_elapsed() メソッドはオブジェクト生成時, または restart() メソッドが呼ばれた時点からの経過時間を返します.
Example
#include <iostream>
#include "clx/timer.h"
int heavy_func(int x) {
return x <= 0 ? 1 : heavy_func(x - 1) + heavy_func(x - 1);
}
int main(int argc, char* argv[]) {
clx::timer t;
std::cout << "precision: " << t.precision() << " sec." << std::endl;
std::cout << "start heavy_func(28)" << std::endl;
heavy_func(28);
std::cout << "total: " << t.total_elapsed() << " sec." << std::endl;
std::cout << "latest: " << t.update() << " sec." << std::endl;
std::cout << std::endl;
std::cout << "start heavy_func(25)" << std::endl;
heavy_func(25);
std::cout << "total: " << t.total_elapsed() << " sec." << std::endl;
std::cout << "latest: " << t.elapsed() << " sec." << std::endl;
return 0;
}
Result precision: 1e-06 sec. start heavy_func(28) total: 14.621 sec. latest: 14.621 sec. start heavy_func(25) total: 16.293 sec. latest: 1.672 sec.
Template Parameter
- GetTimePolicy
- 時刻を取得するためのクラスを指定します.
Related Types
typedef GetTimePolicy policy;
Construction and Member Functions
basic_timer(); void restart(); double update(); double total_elapsed() const; double elapsed() const; double precision() const;
elapsed() メソッドは最後に update() メソッドが呼ばれてからの経過時間, total_elapsed() メソッドはオブジェクト生成時,または restart() メソッドが呼ばれた時点からの経過時間を返します.