пятница, 23 сентября 2011 г.

Оптимизация кода.

Одной из проблем использования языков высокого уровня является объем получаемого в результате компиляции машинного кода. Особенно остро эта проблема ощущается для микроконтроллеров. Если для больших ПК, с их гигабайтами памяти и HDD, объем кода практически не имеет значения, то ограниченность ресурсов даже топовых МК предъявляет особые требования. Так, например, объем одного и того же алгоритма на ассемблере и языке высокого уровня может отличаться в десятки раз. В качестве примера можно привести IDE Arduino, в которой даже простейший код занимает очень много места.
К счастью, многие разработчики стали встраивать в свои компиляторы оптимизаторы кода. Так в системе программирования Amicus18 IDE, оптимизатор идет дополнительной опцией, при этом глубину оптимизации можно настраивать. Несколько иной подход в среде MicroPascal, предлагаемой фирмой Microelectronica. Оптимизация там выполняется в процессе компилирования. при этом более новые версии имеют более компактный код. Для опыта была откомпилирована одна и та же программа термометра на микроконтроллере PIC12F629. Использовались среды MicroPascal ver.6 и MicroPascalPro ver.4.6. В первом случае объем кода составил 844 команды, во втором 743. Прогресс явный, хотя все то же самое можно вполне уместить пару сотен ассемблерных команд. Меньший объем у версии PRO порадовал, учитывая ограничение в бесплатной версии на 2 кб.

Комментариев нет:

Отправить комментарий