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
14
15namespace sc = ::std::chrono;
16
17namespace designlab
18{
19
21 start_time_(sc::system_clock::now()),
22 end_time_(sc::system_clock::now())
23{
24}
25
27{
28 start_time_ = sc::system_clock::now();
29}
30
31
33{
34 end_time_ = sc::system_clock::now();
35}
36
37
39{
40 // 要した時間を計算.
41 const sc::system_clock::duration dur = end_time_ - start_time_;
42
43 // 秒に変換.
44 const std::int64_t sec = sc::duration_cast<sc::seconds>(dur).count();
45
46 // ミリ秒に変換.
47 const std::int64_t milli_sec = sc::duration_cast<sc::milliseconds>(dur).count();
48
49 return static_cast<double>(sec) + static_cast<double>(milli_sec) / 1000.0;
50}
51
52
54{
55 // 要した時間を計算.
56 const sc::system_clock::duration dur = end_time_ - start_time_;
57
58 // ミリ秒に変換.
59 const std::int64_t milli_sec = sc::duration_cast<sc::milliseconds>(dur).count();
60
61 // マイクロ秒に変換.
62 const std::int64_t usec = sc::duration_cast<sc::microseconds>(dur).count();
63
64 return static_cast<double>(milli_sec) + static_cast<double>(usec) / 1000.0;
65}
66
67
69{
70 // 要した時間を計算.
71 const sc::system_clock::duration dur = end_time_ - start_time_;
72
73 // マイクロ秒に変換.
74 const std::int64_t usec = sc::duration_cast<sc::microseconds>(dur).count();
75
76 return static_cast<double>(usec);
77}
78
79
84
89
94
95
96std::string Stopwatch::GetNowTimeString() const
97{
98 // 現在の日時をYYYY/MM/DD HH:MM形式の文字列で取得する.
99 sc::system_clock::time_point now = std::chrono::system_clock::now();
100 time_t now_time = std::chrono::system_clock::to_time_t(now);
101 std::tm now_tm;
102 localtime_s(&now_tm, &now_time);
103 char now_time_str[64];
104 strftime(now_time_str, sizeof(now_time_str), "%Y%m%d_%H%M_%S", &now_tm);
105 return std::string(now_time_str);
106}
107
108} // namespace designlab
Stopwatch()
コンストラクタ 現在時刻で初期化する.
Definition stopwatch.cpp:20
std::string GetElapsedMilliSecondString() const
経過時間をミリ秒で表した文字列を取得する.
Definition stopwatch.cpp:85
double GetElapsedSeconds() const
経過時間を秒で取得. start()と end()を呼び出してからこの関数を呼ぶ.
Definition stopwatch.cpp:38
std::string GetElapsedSecondsString() const
経過時間を秒で表した文字列を取得する.
Definition stopwatch.cpp:80
double GetElapsedMilliSecond() const
計測結果をミリ秒で取得. start()と end()を呼び出してからこの関数を呼ぶ.
Definition stopwatch.cpp:53
double GetElapsedMicroSecond() const
計測結果をマイクロ秒で取得. start()と end()を呼び出してからこの関数を呼ぶ.
Definition stopwatch.cpp:68
void End()
計測終了時にこの関数を呼ぶ.
Definition stopwatch.cpp:32
std::string GetNowTimeString() const
現在の日時をYYYY/MM/DD HH:MM形式の文字列で取得する.
Definition stopwatch.cpp:96
void Start()
計測開始にこの関数を呼ぶ. リセット処理などを呼ぶ必要なしで,再度計測できる.
Definition stopwatch.cpp:26
std::string GetElapsedMicroSecondString() const
経過時間をマイクロ秒で表した文字列を取得する.
Definition stopwatch.cpp:90
std::string FloatingPointNumToString(const T num, const int digit=kDigit, const int width=kWidth)
小数を文字列に変換する関数. C++ では C のフォーマットのように %3.3f とかで小数を文字列に変換できないため自作する.
Definition math_util.h:161