Микроконтроллерные устройства
Главная | Каталог статей | Регистрация | Вход
Воскресенье
19.05.2024
01:37
Приветствую Вас Гость | RSS
Главная » Статьи » Программирование » Разработка программного обеспечения

Эффективное программирование

ЭФФЕКТИВНОЕ ПРОГРАММИРОВАНИЕ

     Рациональное использование подходящих типов данных

     При определении типов данных следует принимать во внимание их размер. Например, действия с 8-разрядными операндами часто менее эффективны, чем с 32-разрядными, если речь идет о 32-разрядном ЦПУ. И наоборот – 8-разрядный МК неэффективен при операциях с 32-разрядными данными. Если Вы используете целые константы, при определении числа используйте суффикс, соответствующий желаемому размеру, например, 36L.

     Определение переменной или константы как signed (со знаком) означает, что число может быть отрицательным. При модификации данных такого типа компилятор использует арифметические операции, тогда как при работе с данными типа unsigned (без знака) используются лишь битовые и сдвиговые операции, которые выполняются быстрее. Вывод: если Вы не используете отрицательных значений, убедитесь, что операнды имеют тип unsigned.

     Операции с числами, представленными в формате с плавающей точкой, обычно очень требовательны к ресурсам и требуют подключения дополнительных библиотек. Рассмотрите возможность использования только целочисленных операндов, это позволит повысить производительность.

     Необходимо избегать операций вычитания и суммирования каких-либо чисел с указателями (адресная арифметика), так же как и использования смешанных типов данных в выражениях. Это приводит к генерации неэффективного кода и может послужить причиной потери информации (за счет приведения типов в выражении).

     Использование регистровой памяти

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

     Следует избегать использования переменных аргументов (стиля printf), поскольку это вынуждает компилятор размещать их в стеке. Вместо этого их лучше размещать в регистрах общего назначения.

     Учитывайте свойства компилятора и содействуйте его преобразованиям

     Следует использовать прототипы функций, поскольку это облегчает нахождение ошибок в исходном коде, например, таких как нежелательное преобразование типов. «Прототипирование» также позволяет компилятору генерировать более эффективный код.

     В целях оптимизации переменные и функции статического типа (static) необходимо использовать исключительно в файле или модуле, в котором они объявлены.

     При оптимизации кода значительным препятствием для компилятора является использование ассемблерных вставок. Поэтому используемые ассемблерные инструкции старайтесь размещать в отдельных ассемблерных модулях. Если это возможно, для доступа к специальным функциям процессора используете встроенные (intrinsic) функции.

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

     «Пустые» циклы, т.е. код, который не имеет иного действия, кроме задержки, может быть удален компилятором. Вместо этого используйте службы ОС, встроенные функции, таймеры ЦПУ или переменные типа volatile.

     По возможности создавайте длинные базовые блоки. Базовый блок представляет собой непрерываемую последовательность исходного кода, в которой не используется вызов сторонних функций. Это позволяет более эффективно использовать регистры и способствует лучшей оптимизации кода.

Категория: Разработка программного обеспечения | Добавил: Dante (20.01.2011) | Автор: Ванцев Д.В. E W
Просмотров: 1471 | Рейтинг: 3.3/3
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Категории раздела
Разработка программного обеспечения [2]
Общие вопросы разработки прграмного обеспечения для микроконтроллеров: подходы к программированию, алгоритмизация задач и пр.
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2024
Создать бесплатный сайт с uCoz