Help us understand the problem. What is going on with this article?

(c++11)chronoを用いた時間計測(タイムスタンプのとり方)

More than 3 years have passed since last update.

(c++11)How to use "chrono(c++11)" for timestamp.

Abstract

chronoとは, c++11で追加された精度に優れた時間ライブラリであり, gccやclangだけではなくvisual studioでも用いることができる.
しかし, 一方でchronoの扱いづらさの指摘もある.

本の虫: C++11の時間ライブラリ: chrono

問題は、これらのコンセプトを学ぶのに、労力がかかるという事だ。私は規格を読めるし、Boostや標準化委員会での議論の経緯も知っているからいいものの、通常のユーザーがプログラミング言語をただ使うためだけに、規格や規格制定時の議論や背景の理解を必要とするべきではない。

また,"gettimeofday"はLinuxのような処理系で用いられてきた.しかし, gettimeofdayで用いられるtimezone構造体はobsolete(すたれた, 時代遅れの, もはや用いられない)であり( http://man7.org/linux/man-pages/man2/gettimeofday.2.html ), かつOSを制限する.

そこで, chronoを用いた時間計測の簡単化に取り組む.

Chrono

chronoを用いた処理時間の計測の一般的な使い方は以下である.

引用:C++でフリープラットフォームな時間計測

#include <iostream>
#include <chrono>

int main(){
 std::chrono::system_clock::time_point  start, end; // 型は auto で可
 start = std::chrono::system_clock::now(); // 計測開始時間
// 処理
 end = std::chrono::system_clock::now();  // 計測終了時間
 double elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end-start).count(); //処理に要した時間をミリ秒に変換

}

型はautoでいいとしても, 関数を覚えたりTemplateを理解していないと使いにくい.
そこで, 以下のようなコードを書きたい.

int main(){
 double start,end;
 start = get_time_sec();
 // 処理
 end = get_time_sec();
 double elapsed=end-start;
}

そのためのget_time_sec()関数は以下のように設計した.

#include <chrono>
using namespace std::chrono;
inline double get_time_sec(void){
    return static_cast<double>(duration_cast<nanoseconds>(steady_clock::now().time_since_epoch()).count())/1000000000;
}

無理やりstatic_castでキャストしたけどもっといい実装あるかな...
終了

hurou927
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした