Add a periodic statistics printer to time
This commit is contained in:
parent
4a54e2be60
commit
7107968cdb
25
time.cpp
25
time.cpp
@ -20,6 +20,7 @@
|
|||||||
#include "time.hpp"
|
#include "time.hpp"
|
||||||
|
|
||||||
#include "debug.hpp"
|
#include "debug.hpp"
|
||||||
|
#include "log.hpp"
|
||||||
#include "platform.hpp"
|
#include "platform.hpp"
|
||||||
#include "types/casts.hpp"
|
#include "types/casts.hpp"
|
||||||
|
|
||||||
@ -77,4 +78,28 @@ util::sleep (uint64_t ns) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
util::polled_duration::polled_duration (std::string name, uint64_t interval):
|
||||||
|
m_name (name),
|
||||||
|
m_interval (interval),
|
||||||
|
m_next (nanoseconds () + interval)
|
||||||
|
{ ; }
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
util::polled_duration::start (void) {
|
||||||
|
m_last = nanoseconds ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
util::polled_duration::stop (void) {
|
||||||
|
uint64_t now = nanoseconds ();
|
||||||
|
uint64_t dt = now - m_last;
|
||||||
|
m_series.add (dt / 1000000);
|
||||||
|
|
||||||
|
if (m_next < now) {
|
||||||
|
LOG_DEBUG ("timing: '%s'. %s", m_name, m_series);
|
||||||
|
m_series.reset ();
|
||||||
|
m_next = now + m_interval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
19
time.hpp
19
time.hpp
@ -21,10 +21,29 @@
|
|||||||
#define __UTIL_TIME_HPP
|
#define __UTIL_TIME_HPP
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "stats.hpp"
|
||||||
|
|
||||||
namespace util {
|
namespace util {
|
||||||
uint64_t nanoseconds (void);
|
uint64_t nanoseconds (void);
|
||||||
void sleep (uint64_t ns);
|
void sleep (uint64_t ns);
|
||||||
|
|
||||||
|
class polled_duration {
|
||||||
|
public:
|
||||||
|
polled_duration (std::string name, uint64_t interval);
|
||||||
|
|
||||||
|
void start (void);
|
||||||
|
void stop (void);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string m_name;
|
||||||
|
uint64_t m_last;
|
||||||
|
uint64_t m_interval;
|
||||||
|
uint64_t m_next;
|
||||||
|
|
||||||
|
stats::accumulator<uint64_t> m_series;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // __UTIL_TIME_HPP
|
#endif // __UTIL_TIME_HPP
|
||||||
|
Loading…
Reference in New Issue
Block a user