CLX C++ Libraries - timer
Author: clown

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