mirror of
https://git.ryujinx.app/projects/Kenji-NX.git
synced 2026-09-27 16:37:53 +02:00
* 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, [these changes] 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%).
16 lines
388 B
C#
16 lines
388 B
C#
namespace Ryujinx.Common.Collections
|
|
{
|
|
/// <summary>
|
|
/// Represents a node in the Red-Black Tree.
|
|
/// </summary>
|
|
public class IntrusiveRedBlackTreeNode<T> where T : IntrusiveRedBlackTreeNode<T>
|
|
{
|
|
public bool Color = true;
|
|
public T Left;
|
|
public T Right;
|
|
public T Parent;
|
|
public T Predecessor;
|
|
public T Successor;
|
|
}
|
|
}
|