Re[15]: Есть ли подобие LINQ на других языках/платформах?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 16.04.21 17:36
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>C Linq мы можем небольшими трудозатратами обеспечить ленивые вычисления с некоторыми пенальти. При этом пенальти всё равно будут, всегда, как бы ты ни приседал. Более того — профит будет только в определенной области. Вне её эти пенальти начинают перевешивать все бенефиты.

I>Например, если в числодробилке время в итерациях процентов 80%, то это значит, что можно соптимизировать по CPU раза в два-три просто отказавшись от Linq.

I>В обычных задачах на сами итерации расходуется ничтожное количество времени. Потому замедлив участок даже в 10 раз, ты в целом ничего не теряешь, т.к. компенсация благодаря ленивым вычислениям может дать гораздо больше.

I>Или например в интерактивных сценариях нас вобщем не сильно заботит загрузка процессора, в отличие от серверных. Ну вырастет время обработки данных с милисекунд до десятков или сотен милисекунд — ничего страшного.
I>Потому мерить надо не абы что, а смотреть контекст и долю linq в вычислениях.

Это все прекрасно но как это связано с

Еще нужно добавить про yield и ленивое выполнение.
То есть при выполнении цепочки

list.Where.Where.Select.Count
List пройдет всего один цикл ибо выполнение начнется с права на лево
Count вызовет MoveNext у Select, Select у Where и так далее.
По этому мы можем объединять Where без потери производительности на лишние циклы


Я говорил про yield и ленивые вычисления при которых происходит вычисление справа на лево и избавляемся от лишних циклов?
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.