Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Silver_s, Вы писали:
S_>>Кстати, по поводу битовыжимания. Жаль что C# коппилятор с включенной оптимизацией не достаточно этим занимается.
AVK>Для этого не компилятор надо наворачивать, а CLR дорабатывать. Например, Эрик Мейер считает, что yield должен быть специальной инструкцией IL, а не раскрываться компилятором.
Это конечно некоторые возможности откроет. Но все же не все конструкции имеет смысл до IL доводить.
Например кто-то обкурится и напишет :
foreach (var i in Enumerable.Range(2, 200000))
...;
вместо
for (int i = 2; i <= 200000; i++)
Но тем не менее, имеет полное моральное право, ожидать чтобы код работал с такой же скоростью что и for(;)
Сейчас он раз в 10 медленнее. И не видно,вроде, каких-то принципиальных проблем чтобы это компилятором проинлайнилось.
(Не данный частный случай, а вобще подобные конструкции)
S_>>Слишком уж быстро код генерируется на C# с включенной оптимизацией — компилятор должен 2-10 минут работать над средним проектом, а не 2-5 секунд. (но не засчет Thread.Sleep() конечно)
AVK>
AVK>Скорость компилятора такая не из-за отсутствия оптимизаций, а из-за отсутствия замшелых принципов организации исходников. Сейчас все современные компилируемые языки компилируются на порядки быстрее С++.
Ну 10 минут это допустимый предел чтобы пользователи компилятора плеваться не начали. Release не часто собирать приходится.