Есть ли ресурс, который объясняет, как реализованы операторы LINQ to object? - PullRequest
2 голосов
/ 11 февраля 2011

У меня только что был интересный обмен мнениями об использовании .Except против .Any и разницы в производительности между ними.

Мне интересно, есть ли в сети ресурс, объясняющий различные реализации LINQ для объектов,и каковы последствия производительности.

Я проверил MSDN и hookedonlinq.com, и ни один из них не упоминает, что .Except создает HashSet, тогда как использование array.Any (item => otherarray.Contains (item)) будет просто повторять второй массив для каждого элемента -производительность O (n²) для .Any против O (n) для .Except

Ответы [ 2 ]

4 голосов
/ 11 февраля 2011

Абсолютно - мой Edulinq series:)

Точнее, это серия блогов о том, как LINQ to Objects может быть реализована, с различными дискуссиями о производительности и т. Д.Я не собираюсь гарантировать, что «реальная» реализация всегда идет по одному и тому же маршруту ... но я не ожидаю, что они будут сильно отличаться.

Как и каждый оператор, охватываемый индивидуально, последнийсообщения более общие, речь идет о компромиссах производительности и т. д.

2 голосов
/ 11 февраля 2011

Хотя нет источника, как именно реализована структура (за исключением отражателя), есть EduLinq , любезно предоставленный Джоном Скитом. Это долгое (почти 50 записей в блоге) переопределение всех операторов LINQ, чтобы объяснить, как это работает.

...