Мой вопрос частично совпадает со следующим:
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
Союз LINQ перечисленного из наборов с изменчивым семенем ⇐ C#
Место общения программистов C#
-
Anonymous
1755874957
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]
Мой главный вопрос: [b] Какую конкретную производительность (или надежность, если таковая имеется) существует для предпочтения. Selectmany (). tofrozenset () over .aggregate () [/b]? В ходе написания этого вопроса я говорил себе об использовании первого, поскольку он проще, и я не могу придумать какого -либо поведения LINQ, которое сделало бы его заметно медленнее.
Один аспект, который я хотел бы услышать, это то, что использование. Совместное () ожидается успешно ускорить, что вход, что вход, достаточно, что значительно ускоряет, что в течение всего, что значительно, что значит, что значит, что значит. для plinq).
Если я не услышу никаких убедительных ответов, которые охватывают это, я напишу самооценку, который, по сути, говорит: «Используйте Selectmany и не беспокойтесь об этом».
Подробнее здесь: [url]https://stackoverflow.com/questions/79743552/linq-union-of-an-enumerable-of-sets-with-a-mutable-seed[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия