Какой LINQ к методам оптимизации Объектов Вы используете, или Вы видели в дикой природе?
При ожидании "урожая foreach" и другой оптимизации языка/компилятора для прибытия в C# в 201x я интересен в выполнении всего возможного для создания использования LINQ везде меньше боли производительности.
Один шаблон, который я видел до сих пор, создает пользовательские реализации IEnumerable для определенного combinators, таким образом, что счетное не повторно перечисляется несколько раз.
Тот, который я заметил несколько раз - не используйте:
if (query.Count() > 0)
... используйте вместо этого:
if (query.Any())
Таким образом, это только нужно найти первое совпадение.
РЕДАКТИРОВАТЬ: Вас также может заинтересовать сообщение в блоге , которое я недавно написал об оптимизации, которые могли быть в LINQ to Objects, но не были (или отсутствовали в .NET) 3.5).
Кроме того, если вы собираетесь выполнять много операций x.Contains (y)
, а x
является результатом существующего запроса (т. Е. Он еще не быть некоторой оптимизированной коллекцией), вам, вероятно, следует подумать о создании HashSet
из x
, чтобы избежать линейного сканирования (выполнение запроса для получения x
) результаты) на каждой итерации.