Boost.Chronoで実行時間の簡単な測定

Boost 1.47.0で導入予定のBoost.Chronoでの簡単な実行時間の測定です。

#include <boost/chrono/process_times.hpp>
#include <cmath>

int main()
{
    boost::chrono::run_timer t;

    for (int i = 0; i < 100000; ++i)
        std::sqrt(123.456L); // 時間のかかる処理
}
real 0.008s, cpu 0.016s (185.1%), user 0.016s, system 0.000s


デフォルトではstd::coutに出力されますが、出力先はカスタマイズできます。
以下は、ファイルに出力する例:

#include <boost/chrono/process_times.hpp>
#include <cmath>
#include <fstream>

int main()
{
    std::ofstream file("report.txt");
    boost::chrono::run_timer t(file);

    for (int i = 0; i < 100000; ++i)
        std::sqrt(123.456L); // 時間のかかる処理
}

report.txt

real 0.013s, cpu 0.016s (120.1%), user 0.016s, system 0.000s


出力フォーマットもカスタマイズできます。

#include <boost/chrono/process_times.hpp>
#include <cmath>
#include <fstream>

int main()
{
    std::ofstream file("report.txt");
    const std::string fmt = "\nりある %rs, しーぴーゆー %cs (%p%), ユーザー %us, システム %ss\n";
    boost::chrono::run_timer t(file, fmt);

    for (int i = 0; i < 100000; ++i)
        std::sqrt(123.456L); // 時間のかかる処理
}

report.txt

りある 0.008s, しーぴーゆー 0.016s (187.9%), ユーザー 0.016s, システム 0.000s