GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
stopwatch.cpp
[詳解]
1
3
4// Copyright(c) 2023-2025 Design Engineering Laboratory, Saitama University
5// Released under the MIT license
6// https://opensource.org/licenses/mit-license.php
7
8#include "stopwatch.h"
9
10#include <cstdint>
11
12#include "math_util.h"
13
14namespace sc = ::std::chrono;
15
16namespace designlab {
17
19 : start_time_(sc::system_clock::now()),
20 end_time_(sc::system_clock::now()) {}
21
22void Stopwatch::Start() { start_time_ = sc::system_clock::now(); }
23
24void Stopwatch::End() { end_time_ = sc::system_clock::now(); }
25
27 // 要した時間を計算.
28 const sc::system_clock::duration dur = end_time_ - start_time_;
29
30 // 秒に変換.
31 const std::int64_t sec = sc::duration_cast<sc::seconds>(dur).count();
32
33 // ミリ秒に変換.
34 const std::int64_t milli_sec =
35 sc::duration_cast<sc::milliseconds>(dur).count();
36
37 return static_cast<double>(sec) + static_cast<double>(milli_sec) / 1000.0;
38}
39
41 // 要した時間を計算.
42 const sc::system_clock::duration dur = end_time_ - start_time_;
43
44 // ミリ秒に変換.
45 const std::int64_t milli_sec =
46 sc::duration_cast<sc::milliseconds>(dur).count();
47
48 // マイクロ秒に変換.
49 const std::int64_t usec = sc::duration_cast<sc::microseconds>(dur).count();
50
51 return static_cast<double>(milli_sec) + static_cast<double>(usec) / 1000.0;
52}
53
55 // 要した時間を計算.
56 const sc::system_clock::duration dur = end_time_ - start_time_;
57
58 // マイクロ秒に変換.
59 const std::int64_t usec = sc::duration_cast<sc::microseconds>(dur).count();
60
61 return static_cast<double>(usec);
62}
63
67
71
75
76std::string Stopwatch::GetNowTimeString() const {
77 // 現在の日時をYYYY/MM/DD HH:MM形式の文字列で取得する.
78 sc::system_clock::time_point now = std::chrono::system_clock::now();
79 time_t now_time = std::chrono::system_clock::to_time_t(now);
80 std::tm now_tm;
81 localtime_s(&now_tm, &now_time);
82 char now_time_str[64];
83 strftime(now_time_str, sizeof(now_time_str), "%Y%m%d_%H%M_%S", &now_tm);
84 return std::string(now_time_str);
85}
86
87} // namespace designlab
Stopwatch()
コンストラクタ 現在時刻で初期化する.
Definition stopwatch.cpp:18
std::string GetElapsedMilliSecondString() const
経過時間をミリ秒で表した文字列を取得する.
Definition stopwatch.cpp:68
double GetElapsedSeconds() const
経過時間を秒で取得. start()と end()を呼び出してからこの関数を呼ぶ.
Definition stopwatch.cpp:26
std::string GetElapsedSecondsString() const
経過時間を秒で表した文字列を取得する.
Definition stopwatch.cpp:64
double GetElapsedMilliSecond() const
計測結果をミリ秒で取得. start()と end()を呼び出してからこの関数を呼ぶ.
Definition stopwatch.cpp:40
double GetElapsedMicroSecond() const
計測結果をマイクロ秒で取得. start()と end()を呼び出してからこの関数を呼ぶ.
Definition stopwatch.cpp:54
void End()
計測終了時にこの関数を呼ぶ.
Definition stopwatch.cpp:24
std::string GetNowTimeString() const
現在の日時をYYYY/MM/DD HH:MM形式の文字列で取得する.
Definition stopwatch.cpp:76
void Start()
計測開始にこの関数を呼ぶ. リセット処理などを呼ぶ必要なしで,再度計測できる.
Definition stopwatch.cpp:22
std::string GetElapsedMicroSecondString() const
経過時間をマイクロ秒で表した文字列を取得する.
Definition stopwatch.cpp:72
std::string FloatingPointNumToString(const T num, const int digit=kDigit, const int width=kWidth)
小数を文字列に変換する関数. C++ では C のフォーマットのように %3.3f とかで小数を文字列に変換できないため自作する.
Definition math_util.h:152