From 13dcadc3217b9489934f90c363f15e16d71612fd Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Tue, 5 May 2020 23:40:06 +0200 Subject: [PATCH] Memoize the mean power --- src/sfizz/HistoricalBuffer.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/sfizz/HistoricalBuffer.h b/src/sfizz/HistoricalBuffer.h index 1ed04ebe..e2b3b8e5 100644 --- a/src/sfizz/HistoricalBuffer.h +++ b/src/sfizz/HistoricalBuffer.h @@ -37,6 +37,7 @@ public: buffer.resize(size); fill(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(buffer); + if (!validMean) { + mean = sfz::mean(buffer); + validMean = true; + } + + return mean; } private: Buffer buffer; size_t size { 0 }; size_t index { 0 }; + mutable bool validMean { true }; + mutable ValueType mean { 0.0 }; }; }