|
Конечно, все его возможности, его "ум" определяются разработчиками. Если говорить об оптимизации, то бывают машинно-независимые способы оптимизации (на уровне анализа потока программы, на уровне алгебры логики при упрощении логических условий, или законов арифметики). А бывают машинно-зависимые (использование специфический инструкций процессора, распределение регистров при выполнении различных операций и т.д.). Кроме того, всем известно, часто отимальность программы по размеру не совпадает с оптимальности по скорости. Эти критерии часто также должны учитываться при оптимизации программы. И последнее, часто бывает, что оптимизированные компилятором программы отлаживать становится затруднительно. Поэтому желательно при отладке программы оптимизацию отключать.
Исходя из всего сказанного, в компиляторах обычно имеется целый ряд опций для более тонкой настройки возможностей оптимизации в компиляторе. Как раз "разжевать" компилятору чего он может (ему разрешено) делать, а чего делать не должен. Хотя полностью всего не учтешь, и компилятор так или иначе имеет определенную свободу действий. Поэтому желательно хотя бы изредка просматривать генерируемый им код, чтобы понять логику его действий. Я называю это "прочувствовать" компилятор, сделать его для себя более предсказуемым и менее "глючным".
E-mail: info@telesys.ru