Ада-95. Компилятор GNAT



         

Опции оптимизации компилятора


Существует несколько опций командной строки компилятора которые могут быть использованы для общей оптимизации программы:

-O0

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

-O или -O1  - 

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

-O2  - 

Экстенсивная оптимизация, позволяющая получить исполнимый файл меньшего размера.

-O3  - 

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

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

При этом следует учитывать, что согласно замечаний в GCC FAQ округление вещественных чисел с плавающей точкой может вызвать проблемы при использовании опций командной строки компилятора -O2 и -O3

без одновременного использования опции -ffloat-store

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

На производительность результирующей программы оказывают влияние опции командной строки компилятора которые управляют встроенной подстановкой (inline):

-gnatn  - 

позволяет осуществлять встроенную подстановку между пакетами, когда директива компилятора Inline

используется в спецификациях пакетов.

-gnatN  - 

позволяет осуществлять автоматическую встроенную подстановку между пакетами (ведет к большему расходу памяти)

отсутствие
-gnatn / -gnatN
 - 

встроенная подстановка между пакетами не осуществляется даже в случаях, когда директива компилятора Inline

используется в спецификациях пакетов.

<


Содержание  Назад  Вперед