Memory Changes
- Refactors the RangeList and derivative classes used for handling lists of regions
- The Binary searches are now more performant, relying on edge searches instead of just returning the first matching hit and manually iterating until the edge is found
- Most look-ups now return a RangeItem, which acts as a linked list node now, instead where possible, moving away from Array copies. This should help with some specific lag spikes.
- Made IntrusiveRedBlackTreeNodes act like linked list nodes too to improve the lookup time of minimums, maximums and successors.
- Changed a few cases of
HasFlag()
into binary operations to save on memory allocations.
In general this MR should increase frame time stability and lag spikes, but at the cost of some overhead to memory look-ups, the result being a very slightly better average fps from my testing (~1-2%).
Edited by LotP