Вопросы, которые необходимо учитывать при разработке или кодировании для меньших результатов - PullRequest
0 голосов
/ 19 января 2010

Пожалуйста, опубликуйте пункты, которые следует иметь в виду при разработке или кодировании для меньших результатов для встроенных систем.

Я не даю сведения о компиляторе или платформе, так как мне нужна общая информация. Но любая конкретная информация о ОС на базе Linux также приветствуется.

Ответы [ 4 ]

2 голосов
/ 19 января 2010

Зависит от того, как низко вы хотите получить. В настоящее время я пишу для фискальных принтеров, и там нет ОС, и главное правило - это не динамическое распределение памяти. Самое смешное, что я все же убедил команду написать полностью современный C ++;).

На самом деле есть несколько правил, которые мы определили:

  • без динамического выделения
  • следовательно, нет STL
  • нет обработки исключений (очевидные причины)
1 голос
/ 19 января 2010

для реальной малой занимаемой площади рассмотрите возможность выполнения сборки напрямую.

Мы все знаем, что Hello World в C или C ++ имеет размер 20 КБ + (из-за всех библиотек по умолчанию, которые связаны). В сборе эти накладные расходы пропали. Как указано в комментариях, стандартные библиотеки можно немного уменьшить. Однако факт остается фактом: плотность кода, которую вы можете получить, когда сборка кода намного выше, чем компилятор генерирует из более высокого языка. Поэтому для кода, где важен каждый байт, используйте сборку.

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

1 голос
/ 19 января 2010

Нет общего ответа , только ответы, специфичные для языка / платформы ... но

Маленький объем памяти ...

  1. Не используйте Java, C # / mono, PHP, Perl, Python или что-либо еще со сборкой мусора
  2. Получите как близко к металлу, насколько это возможно , Используйте C
  3. Выполните много профилирования, чтобы увидеть, где выделяется память, если вы используете динамическое распределение
  4. Убедитесь, что вы предотвратили фрагментацию кучи , выделив разумные куски и размеры кучи
  5. Избегайте рекурсивных функций , особенно тех, которые используют malloc (). Лучше выделить чанк и передать указатель.
  6. использовать бесплатно ();)
  7. Убедитесь, что ваши типы не больше, чем требуется
  8. Включить оптимизацию компилятора

Будет больше.

0 голосов
/ 19 января 2010

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

Язык C обеспечивает жесткий контроль ресурсов (то есть циклов памяти и вычислений). Это следует строго рассмотреть.

Избегайте рекурсии , так как его легко использовать и это может привести к переполнению стека.

...