2015-06-15 2 views
2

Есть ли способ оптимизировать скомпилированный код GCC в терминах процессора и памяти с использованием флажков параметров? Использование O3 вместо 01 увеличивает или уменьшает объем памяти или процессора?Оптимизация GCC для использования CPU и MEMORY

+0

обычно оптимизированный код потребляет больше процессора (за меньшее время). вы имеете в виду оптимизацию размера исполняемого файла? это единственная оптимизация с точки зрения потребления памяти, которую компилятор делает для вас. – BeyelerStudios

+0

Вам удастся уменьшить размер вашего кода, написав его в более «экономном» стиле. Существует только столько, что может сделать компилятор для его оптимизации, но это противоречит ограничениям того, что вы написали для кода. – wallyk

ответ

1

Вы можете попробовать -Os, который похож на -O2 (хорошая скорость процессора), одновременно пытаясь уменьшить двоичный размер.

Ознакомьтесь с различными оптимизациями here.

3

об использовании памяти:

  • -Os уменьшает размер бинарного кода программы. Он имеет ограниченный эффект при использовании памяти во время работы (выделение и освобождение памяти C/C++ «вручную»).

    Я говорю, что ограничение с tail recursion optimization может снизить использование стека (эта оптимизация будет также выполняться с -O2/-O3).

  • Опция -flto (link time optimization) также может уменьшить двоичный размер.

использование CPU:

  • Высоко оптимизированный код (например -O3) подчеркнут процессор, но это не означает автоматически более высокое энергопотребление общего процессора (это может привести к минимальному времени выполнения) ,

    E.g. в Compiler-Based Optimizations Impact on Embedded Software Power Consumption (а не только GCC, но интересно), они обнаруживают, что включение различных глобальных оптимизаторов компилятора приводит к значительному увеличению энергопотребления DSP (в среднем на 25%). Хотя эти оптимизации увеличивают потребляемую мощность с помощью DSP, потребление энергии при работе алгоритма уменьшилось в среднем на 95%.

  • Оптимизация профиля при управлении может снизить потребление ЦП (The risks of using PGO (profile-guided optimization) with production environment).

  • Посмотрите на Can we optimize code to reduce power consumption?

Вероятно, вы должны использовать -O2 и не беспокоиться об этом: если вы хотите, чтобы сохранить мощность/память, общий дизайн вашего приложения будет иметь больший эффект, чем компилятор.

+0

Есть ли предыдущая работа, которая изучает влияние оптимизации компилятора на% CPU и Memory? Ссылка, которую вы мне дали, интересна, но я пытаюсь найти некоторые работы, связанные с mem и cpu. спасибо – staticx

0

Оптимизация размера кода рассматривается выше.

Я только смотрю на оптимизацию процессора. Вы можете написать действительно хороший/оптимизированный код, который имеет низкое использование процессора и действительно плохой/неоптимизированный код, который максимизирует использование ЦП.

Итак, как вы наиболее эффективно используете свой процессор?

  1. Во-первых, используйте хороший оптимизирующий компилятор. Я не буду говорить с GCC, но Intel и некоторые другие приобретенные компиляторы (например, PGI) очень хороши в оптимизации.
  2. Используйте базовые аппаратные средства, такие как векторные инструкции, FMA, регистры и т. Д.
  3. Следуйте рекомендациям по использованию периферийных устройств, таких как сотовая связь, Wi-Fi, gps и т. Д.
  4. Следуя рекомендациям по разработке SW, например, скрытию скрытых данных, избегайте опроса с использованием прерываний, при необходимости используйте пул потоков и т. Д.

Удачи.

Смежные вопросы