Пишем на Си эффективно

Каждый большой и развивающийся проект рано или поздно упирается в физические ограничения. Не хватает памяти (программ или данных). Не хватает быстродействия. Перейти на новое железо не всегда возможно по разным причинам и обычно нежелательно.

Конечно, есть кардинальный способ - переписать критические места (а может и всю программу) на ассемблере. Но очень уж это трудоемко (в написании, а тем более в отладке).

А может быть удастся сгенерировать оптимальный код, используя простой компилятор Си? Может быть посмотреть критически на то, что называют "стилем программирования"?

В этом разделе я попробую рассказать, как писать на Си, чтобы получался быстрый, короткий, не требовательный к ресурсам код. Какие конструкции языка Си выгоднее и почему.

Здесь показаны конкретные примеры с кратким описанием. Все примеры компилировались с помощью AVR_GCC 3.3 с ключами "-O0" (без оптимизации) и "-O3" (максимально оптимизировать скорость). Ключ "-Os" (оптимизация по размеру) обычно дает результат очень похожий на "-O3". Размер и скорость кода указаны без Си-шных пролога и эпилога. Урезанные листинги примеров доступны по ссылкам.

Желаю успехов!