読者です 読者をやめる 読者になる 読者になる

Boost.Chrono version 0.7

C++

【chrono】 review version


Boost.ChronoのレビューバージョンがVaultにアップロードされています。


大きな変更としては、設定によってヘッダオンリーで使えるようになった点でしょうか。
以下のように、BOOST_CHRONO_INLINEDをdefineすることで、Chronoライブラリをビルドすることなく使用できます。

#define BOOST_ERROR_CODE_HEADER_ONLY
#define BOOST_CHRONO_INLINED

#include <iostream>
#include <cmath>
#include <boost/chrono/system_clocks.hpp>

typedef boost::chrono::high_resolution_clock clock_type;

int main()
{
    clock_type::time_point start = clock_type::now();

    for (long i = 0; i < 10000000; ++i)
        std::sqrt(123.456L);

    boost::chrono::nanoseconds elapsed = clock_type::now() - start;
    std::cout << "tooks " << elapsed.count() << " nano seconds" << std::endl;
}
tooks 251761327 nano seconds

Chronoが依存しているBoost.Systemライブラリも、BOOST_ERROR_CODE_HEADER_ONLYをdefineすればヘッダのみで使用できます。


他の大きな変更としては、Clockの名前とエポックの情報をとってくるclock_stringが追加されています。
(各Clockごとに特殊化されています)

#define BOOST_ERROR_CODE_HEADER_ONLY
#define BOOST_CHRONO_INLINED

#include <iostream>
#include <cmath>
#include <boost/chrono/system_clocks.hpp>
#include <boost/chrono/chrono_io.hpp>

using namespace boost::chrono;

int main()
{
    std::cout << clock_string<system_clock, char>::name() << std::endl;
    std::cout << clock_string<system_clock, char>::since() << std::endl;
}
system_clock
 since Jan 1, 1970