My implementation contains a
SpriteComponent class which has a
Z property; I use this to determine the order in which to draw my entities (higher Z = drawn on top). It's a simple integer.
What I'm worrying about (premature optimization, I suspect) is the runtime complexity of the function which gets the list of all the
SpriteComponents to draw, in order of their Z attribute:
List<IEntity> entitiesToDraw = currentScreen.Entities .Where(e => e.HasComponent<SpriteComponent>()) .OrderBy(e => e.GetComponent<SpriteComponent>().Z) .ToList();
From what I've read,
OrderBy uses QuickSort, which is \$O(n log n)\$, but I'm not sure about
I can reasonably assume:
- 1000+ entities can concurrently exist
- 90% or more of entities have a
- Changing the
Zof a sprite happens fairly infrequently for most sprites
My questions are:
- Should I be worrying about this call at all?
- If so, how can I reduce the runtime complexity, and/or cache the results reliably?