From e6c21f131a7c5109459cc48c8a1073b7e5a537cf Mon Sep 17 00:00:00 2001 From: Chomp Date: Tue, 25 Feb 2025 15:04:51 +0000 Subject: [PATCH] Optimised `ListCumSum` --- Libraries/Core/Utils/MathUtil.cs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Libraries/Core/Utils/MathUtil.cs b/Libraries/Core/Utils/MathUtil.cs index 57092219..958312e6 100644 --- a/Libraries/Core/Utils/MathUtil.cs +++ b/Libraries/Core/Utils/MathUtil.cs @@ -24,16 +24,20 @@ public class MathUtil /// cumulative sum of values public List ListCumSum(List values) { - var cumSumList = new List(values.Count); - var sum = 0D; - - foreach (var value in values) + if (values.Count == 0) { - sum += value; - cumSumList.Add(sum); + return []; } - return cumSumList; + var cumSumArray = new double[values.Count]; + cumSumArray[0] = values[0]; + + for (var i = 1; i < values.Count; i++) + { + cumSumArray[i] = cumSumArray[i - 1] + values[i]; + } + + return [..cumSumArray]; } ///