Dear community members,
I use a function of Maximum Subarray Sum (Kadane algorithm) very often in my tool. It is a bottleneck.
Could you tell me if the performance can be improved using some internal R tricks? It works faster in C++ - but I do not really want to add C++ code to my R-based tool...
maxSubArraySum <- function(x){
bestSoFar = 0
bestNow = 0
bestStartIndexSoFar = -1
bestStopIndexSoFar = -1
bestStartIndexNow = -1
for (i in 1:length(x)) {
value = bestNow + x[i]
if (value > 0) {
if (bestNow == 0) {
bestStartIndexNow = i
}
bestNow = value
}
else
bestNow = 0
if (bestNow > bestSoFar) {
bestSoFar = bestNow
bestStopIndexSoFar = i
bestStartIndexSoFar = bestStartIndexNow
}
}
return(c(bestSoFar, bestStartIndexSoFar, bestStopIndexSoFar))
}