CR feedback

This commit is contained in:
Brad Hefta-Gaub 2016-03-24 21:14:07 -07:00
parent 7de8a2267f
commit fb09ad51b3
2 changed files with 16 additions and 18 deletions

View file

@ -282,7 +282,7 @@ public:
<< "maxElapsed:" << _maxElapsed
<< "PREVIOUS maxElapsedAverage:" << _maxElapsedAverage
<< "NEW maxElapsedAverage:" << elapsedMovingAverage
<< "numSamples:" << _movingAverage.getNumSamples();
<< "samples:" << _movingAverage.getSamples();
_maxElapsedAverage = elapsedMovingAverage;
}
if (lastHeartbeatAge > _maxElapsed) {
@ -292,7 +292,7 @@ public:
<< "PREVIOUS maxElapsed:" << _maxElapsed
<< "NEW maxElapsed:" << lastHeartbeatAge
<< "maxElapsedAverage:" << _maxElapsedAverage
<< "numSamples:" << _movingAverage.getNumSamples();
<< "samples:" << _movingAverage.getSamples();
_maxElapsed = lastHeartbeatAge;
}
if ((sinceLastReport > HEARTBEAT_REPORT_INTERVAL_USECS) || (elapsedMovingAverage > WARNING_ELAPSED_HEARTBEAT)) {
@ -300,7 +300,7 @@ public:
<< "elapsedMovingAverage:" << elapsedMovingAverage
<< "maxElapsed:" << _maxElapsed
<< "maxElapsedAverage:" << _maxElapsedAverage
<< "numSamples:" << _movingAverage.getNumSamples();
<< "samples:" << _movingAverage.getSamples();
_lastReport = now;
}
@ -310,7 +310,7 @@ public:
<< "elapsedMovingAverage:" << elapsedMovingAverage
<< "maxElapsed:" << _maxElapsed
<< "maxElapsedAverage:" << _maxElapsedAverage
<< "numSamples:" << _movingAverage.getNumSamples();
<< "samples:" << _movingAverage.getSamples();
deadlockDetectionCrash();
}
#endif

View file

@ -69,41 +69,39 @@ template <class T, int MAX_NUM_SAMPLES> class ThreadSafeMovingAverage {
public:
void clear() {
std::unique_lock<std::mutex> lock(_lock);
numSamples = 0;
_samples = 0;
}
bool isAverageValid() const {
std::unique_lock<std::mutex> lock(_lock);
return (numSamples > 0);
return (_samples > 0);
}
void addSample(T sample) {
std::unique_lock<std::mutex> lock(_lock);
if (numSamples > 0) {
T lastAverage = average;
average = (sample * WEIGHTING) + (lastAverage * ONE_MINUS_WEIGHTING);
if (_samples > 0) {
_average = (sample * WEIGHTING) + (_average * ONE_MINUS_WEIGHTING);
} else {
_average = sample;
}
else {
average = sample;
}
numSamples++;
_samples++;
}
T getAverage() const {
std::unique_lock<std::mutex> lock(_lock);
return average;
return _average;
}
T getNumSamples() const {
size_t getSamples() const {
std::unique_lock<std::mutex> lock(_lock);
return numSamples;
return _samples;
}
private:
const float WEIGHTING = 1.0f / (float)MAX_NUM_SAMPLES;
const float ONE_MINUS_WEIGHTING = 1.0f - WEIGHTING;
int numSamples { 0 };
T average;
size_t _samples { 0 };
T _average;
mutable std::mutex _lock;
};