Improve RollingWindow.GetEnumerator performance
Closed this issue · 0 comments
starteleport commented
Rationale
The RollingWindow.GetEnumerator
method allocates a new list for each invocation and copies values to the list via this[int]
, which in turn enters/exits reader lock for each invocation. I was able to speed up this method by more than 50% in terms of execution time and achieve marginally better memory consumption by switching from List<T>
to T[]
and inlining the respective part of this[int]
.
Many built-in indicators as well as some reasonable real-world use cases for RollingWindow
would benefit from this change in backtesting/optimisation.
Potential Solution
Checklist
- I have completely filled out this template
- I have confirmed that this issue exists on the current
master
branch - I have confirmed that this is not a duplicate issue by searching issues