μHAL (v2.8.17)
Part of the IPbus software repository
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
TimeIntervalStats.cpp
Go to the documentation of this file.
1
3
4
5#include <chrono>
6#include <ostream> // for operator<<, ostream, basic_os...
7
8
9namespace uhal {
10
12 nMeasurements(0)
13{
14}
15
16
18{
19}
20
21
23{
24 return nMeasurements;
25}
26
27
28const TimeIntervalStats::Clock_t::duration& TimeIntervalStats::min() const
29{
30 return mMin;
31}
32
33
34const TimeIntervalStats::Clock_t::duration& TimeIntervalStats::max() const
35{
36 return mMax;
37}
38
39
40TimeIntervalStats::Clock_t::duration TimeIntervalStats::mean() const
41{
42 return mSum / nMeasurements;
43}
44
45
46const std::queue<TimeIntervalStats::Clock_t::duration>& TimeIntervalStats::getLatestMeasurements() const
47{
49}
50
51
52void TimeIntervalStats::add(const Clock_t::time_point& aT1, const Clock_t::time_point& aT2)
53{
54 const Clock_t::duration lInterval = aT2 - aT1;
55
56 if ((nMeasurements == 0) or (lInterval < mMin))
57 mMin = lInterval;
58 if ((nMeasurements == 0) or (lInterval > mMax))
59 mMax = lInterval;
60
61 mSum += lInterval;
62 nMeasurements += 1;
63
64 mLatestMeasurements.push(lInterval);
65 if (mLatestMeasurements.size() > 5)
67}
68
69
71{
72 for (size_t i = 0; i < nMeasurements; i++)
74 nMeasurements = 0;
75}
76
77
78std::ostream& operator<<(std::ostream& aStream, const TimeIntervalStats& aStats)
79{
80 if (aStats.size() == 0)
81 aStream << "no values recorded";
82 else {
83 typedef std::chrono::duration<float, std::milli> MilliSec_t;
84
85 aStream << "min / mean / max = " << MilliSec_t(aStats.min()).count() << " / "
86 << MilliSec_t(aStats.mean()).count() << " / " << MilliSec_t(aStats.max()).count() << " ms";
87 std::queue<TimeIntervalStats::Clock_t::duration> lLatestMeasurements = aStats.getLatestMeasurements();
88 aStream << ", last values ";
89 while (lLatestMeasurements.size() > 0) {
90 aStream << MilliSec_t(lLatestMeasurements.front()).count() << (lLatestMeasurements.size() > 1 ? ", " : " ms");
91 lLatestMeasurements.pop();
92 }
93 }
94
95 return aStream;
96}
97
98
99} // end ns uhal
void add(const Clock_t::time_point &aT1, const Clock_t::time_point &aT2)
std::queue< Clock_t::duration > mLatestMeasurements
Clock_t::duration mean() const
const Clock_t::duration & min() const
const Clock_t::duration & max() const
const std::queue< Clock_t::duration > & getLatestMeasurements() const
std::ostream & operator<<(std::ostream &aStr, const uhal::HttpResponseType &aHttpResponse)