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

View file

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