Информация об изменениях

Сообщение Re[7]: Есть ли подобие LINQ на других языках/платформах? от 14.04.2021 13:27

Изменено 14.04.2021 14:27 Serginio1

Re[7]: Есть ли подобие LINQ на других языках/платформах?
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, Serginio1, Вы писали:


S>> Я говорил, про то, что к списку того, что Linq , при кажущейся простоте, потребовал: нужно добавить yield. Ты с этим не согласен?


I>Я прямо процитировал с чем не согласен: "По этому мы можем объединять Where без потери производительности"


I>Ты забыл эту часть своего утверждения?

Но это было сказано в контексе ленивых вычислений, что итерация основного инумератора будет всего одна!
Ты с этим не согласен?
S>>Но часто нужно склеивать запросы передавая их в методы итд. Да жертвуем скоростью на выполнение лямбд, но если лямбда выполняет не действия над int
S>>То потери в производительности значительно меньше 2х

I>А ты сравнивал показания профайлера? Я вот взял да сравнил и выяснил, что для энергичных вычислений Linq даёт существенное замедление.

I>Для ленивых вычислений собственно ровно то же, но тут дело в отсутствии альтернативы. Или много сложного ручного кода, или короткий вариант на Linq
I>Тем не менее, пенальти никуда не девается.

Я уже лет двадцать сравниваю. Те же сортировки и прочие лабуду где используются дженерики без инлайнинга.
По твоему нужно отказаться и от дженериков?
Да и хрен с ним с этими пенальти. Важно скорость кодирования и легкость понимания кода.
S>>Сначала C# ники встретили Linq настороженно, но потом удобство перевысили потери в производительности

I>Да, я помню форматтер кода от джетбрейнс в решарпере на linq Который тормозил и мог сожрать всю память.


Во многих случаях просто невозможно без Linq. Но и в том же Linq ты можешь использовать расширения, где можно инлайнить нужный компаратор.
Там всего то будет 2 сточки кода с yield
И при этом все равно будет удобнее чем ручная реализация цепочки отборов, сортировок. Да на 1-2 проблем нет, но на 5 уже код нечитаемый
Ну а сжирал память уж точно не из-за Linq.
Re[7]: Есть ли подобие LINQ на других языках/платформах?
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, Serginio1, Вы писали:


S>> Я говорил, про то, что к списку того, что Linq , при кажущейся простоте, потребовал: нужно добавить yield. Ты с этим не согласен?


I>Я прямо процитировал с чем не согласен: "По этому мы можем объединять Where без потери производительности"


I>Ты забыл эту часть своего утверждения?

Но это было сказано в контексе ленивых вычислений, что итерация основного инумератора будет всего одна!
Ты с этим не согласен?
S>>Но часто нужно склеивать запросы передавая их в методы итд. Да жертвуем скоростью на выполнение лямбд, но если лямбда выполняет не действия над int
S>>То потери в производительности значительно меньше 2х

I>А ты сравнивал показания профайлера? Я вот взял да сравнил и выяснил, что для энергичных вычислений Linq даёт существенное замедление.

I>Для ленивых вычислений собственно ровно то же, но тут дело в отсутствии альтернативы. Или много сложного ручного кода, или короткий вариант на Linq
I>Тем не менее, пенальти никуда не девается.

Я уже лет двадцать сравниваю. Те же сортировки и прочие лабуду где используются дженерики без инлайнинга.
По твоему нужно отказаться и от дженериков?
Да и хрен с ним с этими пенальти. Важно скорость кодирования и легкость понимания кода.
S>>Сначала C# ники встретили Linq настороженно, но потом удобство перевысили потери в производительности

I>Да, я помню форматтер кода от джетбрейнс в решарпере на linq Который тормозил и мог сожрать всю память.


Во многих случаях просто невозможно без Linq. Но и в том же Linq ты можешь использовать расширения, где можно инлайнить нужный компаратор.
Там всего то будет 2 сточки кода с yield
И при этом все равно будет удобнее чем ручная реализация цепочки отборов, сортировок. Да на 1-2 проблем нет, но на 5 уже код нечитаемый
И в реалиях нужно применять динамически фильтры, соединения
Ну а сжирал память уж точно не из-за Linq.