Я пытаюсь оптимизировать подсчет элементов в коллекции (IEnumerable<T>
)
Поскольку эти данные загружаются из кеша в памяти, нет смысла переключаться на использование IQueryable<T>.Count()
(чтобы было просто вызов базы данных SELECT count(1) FROM TableT
вместо перебора всего списка IEnumerable<T>
)
Итак, у меня просто возникла идея, что, возможно, итерация коллекции (IEnumerable) типа значения (например, int) может быть быстрее, чем итерация по коллекция ссылочного типа
myEnumerable.Count();
заменена на это:
myEnumerable.Select(el => el.Id).Count();
Не знаю, правда ли это, и не знаю, как протестируйте его правильно, но первые простые оценки показывают, что итерация по IEnumerable<int>
немного быстрее (например, на 5-10%), чем итерация по IEnumerable<some-business-object>
Итак, вопрос в том, есть ли разница для итерации по коллекции содержит ли коллекция типы значений или ссылочные типы?