ДКА, linq и экспоненциальный взрыв
От: Sharov Россия  
Дата: 12.09.18 09:39
Оценка:
Здравтсвуйте.

Тут
Автор: Ночной Смотрящий
Дата: 11.09.18
вот дискуссия завезалась на счет экспоненциального взрыва состояний при генерации ДКА в linq.
На сколько это правда в теории и на практике? Разве для каждого linq expression не будет построен свой отдельный автомат,а будет генерится один большой и общий?
Говорят jb переписало весь код с linq по ентой причине или из-за проблем с памятью?
Кодом людям нужно помогать!
Re: ДКА, linq и экспоненциальный взрыв
От: _FRED_ Черногория
Дата: 12.09.18 20:01
Оценка: 5 (1)
Здравствуйте, Sharov, Вы писали:

S>Тут
Автор: Ночной Смотрящий
Дата: 11.09.18
вот дискуссия завезалась на счет экспоненциального взрыва состояний при генерации ДКА в linq.


Этот пользователь как-то раз очень настойчиво убеждал меня в сущестовании у решарпере некой настройки, которой там конечно же небыло (если память не изменяет, только совсем недавно вроде бы появилась) и на все просьбы показать её отвечал примерно в том же духе и тем же тоном, что и там Чего взять?

S>На сколько это правда в теории и на практике? Разве для каждого linq expression не будет построен свой отдельный автомат,а будет генерится один большой и общий?


А при чём тут "linq expression"? Речь, мне показалось, была про System.Linq.Enumerable и yield, а не про экспрешены System.Linq.Expressions?

S>Говорят jb переписало весь код с linq по ентой причине или из-за проблем с памятью?


Тут, наверное, нужно опять же уточнить, о чём именно речь: о yield или о System.Linq.Enumerable — в данном случае это может оказаться важным. Вот например не плохое описание сыскалось на скорую руку:
https://stackoverflow.com/questions/3969963/when-not-to-use-yield-return

// Кстати, в CoreFx очень прилично оптимизировали Enumerable для простых сценариев.
Help will always be given at Hogwarts to those who ask for it.
Re[2]: ДКА, linq и экспоненциальный взрыв
От: Sharov Россия  
Дата: 13.09.18 10:08
Оценка:
Здравствуйте, _FRED_, Вы писали:


S>>На сколько это правда в теории и на практике? Разве для каждого linq expression не будет построен свой отдельный автомат,а будет генерится один большой и общий?


_FR>А при чём тут "linq expression"? Речь, мне показалось, была про System.Linq.Enumerable и yield, а не про экспрешены System.Linq.Expressions?


Под expression я имел вот что: дан сл. вызов .Select().Where().GroupBy().Any() и каждый вызов ф-ии явл. expression. Вероятно, я с терминологией напутал.
Далее, каждый вызов ф-ии (select, where и т.д.) генерит свой КА, и откуда там взять exp. росту я
Кодом людям нужно помогать!
Re: ДКА, linq и экспоненциальный взрыв
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 14.09.18 12:39
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Тут
Автор: Ночной Смотрящий
Дата: 11.09.18
вот дискуссия завезалась на счет экспоненциального взрыва состояний при генерации ДКА в linq.

S>На сколько это правда в теории и на практике? Разве для каждого linq expression не будет построен свой отдельный автомат,а будет генерится один большой и общий?
S>Говорят jb переписало весь код с linq по ентой причине или из-за проблем с памятью?

На сколько я помню, они переписали не весь код, а вещи навроде форматтера. Зачем в такие числодробилки совать linq — вообще не ясно. Там ленивость вообще не нужна.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.