Memoize the mean power

This commit is contained in:
Paul Ferrand 2020-05-05 23:40:06 +02:00
parent 646b71cb43
commit 13dcadc321

View file

@ -37,6 +37,7 @@ public:
buffer.resize(size);
fill<ValueType>(absl::MakeSpan(buffer), 0.0);
index = 0;
validMean = false;
}
/**
@ -46,6 +47,7 @@ public:
*/
void push(ValueType value)
{
validMean = false;
if (size > 0) {
buffer[index] = value;
if (++index == size)
@ -60,11 +62,18 @@ public:
*/
ValueType getAverage() const
{
return mean<ValueType>(buffer);
if (!validMean) {
mean = sfz::mean<ValueType>(buffer);
validMean = true;
}
return mean;
}
private:
Buffer<ValueType> buffer;
size_t size { 0 };
size_t index { 0 };
mutable bool validMean { true };
mutable ValueType mean { 0.0 };
};
}