Memoize the mean power
This commit is contained in:
parent
646b71cb43
commit
13dcadc321
1 changed files with 10 additions and 1 deletions
|
|
@ -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 };
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue