> компилятор делает локальные оптимизации, поэтому "register" компилятором
> определяется как "здесь желательно использовать регистр".Это оно не компилятором так определяется, а стандартом языка. :)
Но сути дела это не меняет. А суть дела в том, что использование managed code позволяет делать динамические оптимизации, в ран-тайме. Вот теперь вот эта вот переменная стала что-то там часто использоваться, давайте мы её в РОН положим. А в C так не получится -- кодогенератор запускается один раз. ;)
Впрочем, нельзя сказать, что использование рантайм-оптимизаций сразу же заткнёт C за пояс. Конечно же, нет. Можно всегда отоптимизировать код на C до безумия.
Но именно этого делать в разработке программных продуктов и нельзя. На OpenNet'е уже, кажется, пролетала ссылка на презентацию OpenBSD'шника по Secure Programming'у. Там чётко сказано -- "оптимизируйте дизайн, а не код". "Весь код -- простой и надоедливый. "Умный" код -- источник ошибок".
И ведь это действительно так. IBM'ер же какой-то писал: "Если для понимания того, как работает ваш код, необходимо понимание тонких различий между ++i и i++, значит, ваш код слишком сложен". А сложный код -- это "странные" паники в самых неожиданных местах.
Впрочем, те, кто написал в своей жизни что-то сложнее, чем "Hello, World!", это и так знают. ;)