8#include "../global.hpp"
9#include "utilities.hpp"
10#include "stop_watch.hpp"
53 return std::make_unique<RateCounter>(windowSize);
65 return std::make_unique<RateCounter>(windowSize, mode);
85 , windowSize_(windowSize)
97 , windowSize_(windowSize)
114 return stopWatch_.Mode();
134 if (windowSize_ == windowSize)
140 windowSize_ = windowSize;
142 while (
static_cast<int>(measurements_.size()) > windowSize_)
143 measurements_.pop_front();
153 double sum =
std::accumulate(measurements_.begin(), measurements_.end(), 0.0);
154 if (!measurements_.size())
157 auto result =
std::round(sum /
static_cast<double>(measurements_.size()));
168 if (measurements_.size() < 2)
172 return 1000.0 /
static_cast<double>(averageTimeSpan.count());
191 measurements_.clear();
209 auto now =
static_cast<double>(stopWatch_.TimeSpan().count());
210 measurements_.push_back(now - lastReading_);
214 while (
static_cast<int>(measurements_.size()) > windowSize_)
215 measurements_.pop_front();
RateCounter()
Constructor for a rate counter object for multi-CPU architectures with default averaging window size ...
Definition rate_counter.hpp:73
Frame rate measurement counter with selectable averaging window.
Definition rate_counter.hpp:24
RateCounter(int windowSize, StopWatchMode mode)
Constructor for a rate counter object.
Definition rate_counter.hpp:95
static constexpr int MinimumWindowSize
Minimal selectable averaging window size.Trying to select a smaller window will result in an exceptio...
Definition rate_counter.hpp:27
std::chrono::milliseconds AverageTimeSpan() const noexcept
Average time span between two steps or since the creation of the counter or the most recent reset.
Definition rate_counter.hpp:151
void SetWindowSize(int windowSize)
Sets the currently used averaging window size.
Definition rate_counter.hpp:132
static std::unique_ptr< RateCounter > Create(int windowSize)
Creates a frame counter object for multi CPU.
Definition rate_counter.hpp:51
void Reset() noexcept
Erase all measurements so far.
Definition rate_counter.hpp:189
static std::unique_ptr< RateCounter > Create()
Creates a frame counter object for multi CPU with default averaging window (25).
Definition rate_counter.hpp:40
double Rate() const noexcept
Returns the rate(1 / s) at which the steps occurred.
Definition rate_counter.hpp:166
int NumSteps() const noexcept
Number of steps called since construction or since last reset.
Definition rate_counter.hpp:180
static constexpr int MaximumWindowSize
Maximum selectable averaging window size. Trying to select a larger window will result in an exceptio...
Definition rate_counter.hpp:33
void Step() noexcept
Reading step (first reading step will not yield a measurement result, but define the starting point).
Definition rate_counter.hpp:200
RateCounter()
Constructor for a rate counter object for multi-CPU architectures with default averaging window size ...
Definition rate_counter.hpp:73
int WindowSize() const noexcept
Gets the currently used averaging window size.
Definition rate_counter.hpp:122
static std::unique_ptr< RateCounter > Create(int windowSize, StopWatchMode mode)
Creates a frame counter object.
Definition rate_counter.hpp:63
static constexpr int DefaultWindowSize
Default averaging window size.
Definition rate_counter.hpp:30
StopWatchMode Mode() const noexcept
The stop watch mode used internally.
Definition rate_counter.hpp:112
RateCounter(int windowSize)
Constructor for a rate counter object for multi-CPU architectures.
Definition rate_counter.hpp:83
Speed measurement object.
Definition stop_watch.hpp:43
Namespace for helpers and utilities, which are not directly related to image processing.
Definition version.hpp:16
StopWatchMode
Mode at which the StopWatch should work.
Definition utilities.hpp:28
@ MultiCPU
Definition utilities.hpp:34
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17