CLX C++ Libraries
Home >> timer

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

example_timer.cpp

#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() メソッドが呼ばれた時点からの経過時間を返します.