Оптимизация компилятора для максимально быстрого кода

StackOverflow https://stackoverflow.com/questions/2062316

Вопрос

Я хотел бы выбрать оптимизацию компилятора для создания максимально быстрого приложения.

Для каких из следующих настроек следует установить значение true?

  • Устранение мертвого магазина
  • Устраните повторяющиеся выражения в базовых блоках и функциях.
  • Включить переменную индукцию контура и уменьшение силы
  • Включить планирование инструкций Pentium
  • Расширить общие встроенные функции
  • Оптимизация прыжков
  • Используйте переменные регистра

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

Итак, я хотел бы знать, ускорит ли какой-либо из вышеперечисленных параметров работу приложения, если я установлю для них значение true?

Это было полезно?

Решение

Итак, я хотел бы знать, ускорит ли какой-либо из вышеперечисленных параметров работу приложения, если я установлю для них значение true?

Я знаю, что некоторые возненавидят меня за это, но здесь никто не сможет ответить тебе правдиво.Вам придется опробовать свою программу с ними и без них, и профиль каждую сборку и посмотрите, каковы результаты.Догадки ни к чему не приведут.

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

Другие советы

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

Другой мой совет: используйте другой компилятор.Intel имеет отличную репутацию как оптимизирующий компилятор.VC и GCC, конечно, тоже отличный выбор.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top