Re[34]: Есть ли подобие LINQ на других языках/платформах?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.04.21 11:02
Оценка: +2
Здравствуйте, Serginio1, Вы писали:

I>> Вот еще одно заблуждение. С С++ и джавой ты не знаком?

S> Ииииииииииииии. Охренительный ответ.
S> Приводи код!! Знаком и там нет yield там и Linq нет!!

Ты адекватен, в джаве Linq искать? Там есть streams, которые покрывают твой любимый linq2objects
Employee employee = Stream.of(empIds)
      .map(employeeRepository::findById)
      .filter(e -> e != null)
      .filter(e -> e.getSalary() > 100000)
      .findFirst()
      .orElse(null);


I>>А чуть выше ты соскакиваешь с цены в рантайме на цену в разработке.

I>>Например, когда я пишу, что IEnumerable имеет свою цену, ты начинаешь вещать про разработку.
S> Какую!!! Ты хоть напиши какую!!!

Четвертый раз — вместо x[i] у тебя MoveNext, проход через switch, присваивание Current и чтение Current
И вот эта каша крайне плохо инлайнится, а следовательно ест больше чем весит.
Заметь — это уже в четвертый раз я пишу, а до тебя не доходит.

S> Да извини но херню ты как раз пишешь. Никакой конкретики


Наоборот. Трижды пишу цену использования энумератор, но ты никак не поймешь.

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

S>Причем тут числодробилки! Ты ратуешь за IQueriable. Вон Sinclair пришпондорил Linq.

IQueryable нужен там, где будет обработка Expression и нужен единый подход вне зависимости, BD или коллекции.
То есть, избавляет от дублирования.
Если это не является узким местом для перформанса — используй сколько хошь.

I>>Именно. Профайлер утверждает, что экономия может быть и полтора, и два, и даже десять раз.

S>Ну то есть ты за выполнение слева направо.

Откуда такой вывод? Я и слева направо обгоню это IEnumerable с не меньшим бенефитом.

S>же не заставляет использовать тебя IEnumerablt используй IList и обходись без ленивости.


Если собираешся итерировать по индексу, лучше запрашивать массив явно — исключается целый класс ошибок.

S>Только то вот Linq ленив и ленивость эту в основном создает yield с созданием определенных классов автоматов с сохранением состояния


Вот снова ересь — ленивость создаёт сам IEnumerable и никак иначе. Вобщем, каша. То одно пишешь, то другое, прямо противоположное
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.