Боюсь, это может привести к снижению производительности
Это называется преждевременная оптимизация . Вы беспокоитесь о производительности, но вы ничего не сделали, чтобы проверить, оправдан ли этот страх. Теперь вы рассматриваете возможность принятия мер по исправлению проблемы, которая на самом деле не была подтверждена.
Как мы можем проверить? Давайте рассмотрим очень простую программу:
using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace ConsoleApp3
{
class Program
{
class Sprite
{
private bool _isActive;
public void SetActive(bool isActive)
{
_isActive = isActive;
}
}
static void Main(string[] args)
{
List<Sprite> sl = new List<Sprite>();
for(int i = 0; i<100; i++)
{
sl.Add(new Sprite());
}
Stopwatch spw = new Stopwatch();
spw.Restart();
for (int i = 0; i < 50; i++)
{
sl[i].SetActive(false);
}
Console.Write(1e6 * spw.ElapsedTicks / TimeSpan.TicksPerSecond);
Console.WriteLine(" microseconds");
Console.ReadLine();
}
}
}
В моей системе (пятилетняя i7) результат обычно составляет 20-30 микросекунд. Если рассматривать целевую производительность в 100 кадров в секунду, то это 10 мс на кадр, поэтому эта операция потребляет около 0,3% вашего временного бюджета на кадр. Как вы думаете, стоит ли беспокоиться? Я не. Просто напишите код, чтобы он был читабелен и имел смысл. Беспокойство о производительности, когда это становится проблемой.