Союз LINQ перечисленного из наборов с изменчивым семенемC#

Место общения программистов C#
Ответить
Anonymous
 Союз LINQ перечисленного из наборов с изменчивым семенем

Сообщение Anonymous »

Мой вопрос частично совпадает со следующим:
Query LINQ: Совокупные наборы детей из набора объектов - но мне нужно вдаваться в большее значение, чем это касалось. Агрегация , и на самом деле. Соединенное соединение () не было. Я хочу закончить списками или общим оборудованием .
Я напишу этот вопрос как вопрос о производительности, в полном знании, что это довольно бурно-в-в-тик, потому что размер моего фактического набора данных очень мал (по порядку десятков элементов). Я хотел бы услышать ответы о том, будет ли этот подход успешно масштабироваться до этого размера. (Что касается типичных аргументов против преждевременной оптимизации, я также считаю, что мой код в его текущей форме достаточно простыми, и я хотел бы начать с простого решения независимо от того, заботиться ли я о производительности или нет.)
Я начинаю с ienumerable , где t является простой записью . Внутреннее перечисление - это на самом деле, что клавиш -коллекция Но (a) эта деталь, вероятно, не имеет значения, и (b) я, вероятно, не должен подчиняться этому типу. Первоначально я не думал, что было бы очень хорошей идеей применять. Selectmany () на первом этапе, из -за следующего: если между входными наборами существует значительное перекрытие, и если количество входных наборов велик, то память будет без необходимости воздушного шара. (Однако: больше думать об этом, я считаю, что .selectmany останется ленивым и все еще сможет эффективно передать ленивый перечисляемый конструктор замороженного ; единственное время, когда это станет проблемой, - это если перечисление в соответствии с последовательности перед созданием набора.) В том, что я использую в настоящее время, это то, что я использую в настоящее время, - это соучастник, и код, который> over weepret wis wispor> wepertive
Меня подпрыгивает, что это мутирует семя агрегации (это безопасно?), Но альтернативная - построение нового набора для изменения его вне места - вызывает у меня проблемы с эффективностью. Эта функция используется здесь: < /p>
FrozenSet flatSet = keyGroups
.Aggregate(
seed: new HashSet(),
func: AggregateVars,
resultSelector: dest => dest.ToFrozenSet()
);
[/code]
Мой главный вопрос: Какую конкретную производительность (или надежность, если таковая имеется) существует для предпочтения. Selectmany (). tofrozenset () over .aggregate () ? В ходе написания этого вопроса я говорил себе об использовании первого, поскольку он проще, и я не могу придумать какого -либо поведения LINQ, которое сделало бы его заметно медленнее.
Один аспект, который я хотел бы услышать, это то, что использование. Совместное () ожидается успешно ускорить, что вход, что вход, достаточно, что значительно ускоряет, что в течение всего, что значительно, что значит, что значит, что значит. для plinq).
Если я не услышу никаких убедительных ответов, которые охватывают это, я напишу самооценку, который, по сути, говорит: «Используйте Selectmany и не беспокойтесь об этом».

Подробнее здесь: https://stackoverflow.com/questions/797 ... table-seed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»