ПРИЛОЖЕНИЕ 6 Автоматическая оптимизация программ

We use cookies. Read the Privacy and Cookie Policy

Компилятор Турбо Паскаля автоматически производит оптимизацию выполняемого кода по нескольким критериям:

1. Вычисление выражений, состоящих из констант числовых и символьных типов (в том числе значений функций Abs, Sqr, Succ, Pred, Odd, Lo, Hi, Swap и Ptr от констант) или из конкатенации строк, происходит на этапе компиляции. То есть присваивания A:=10+Sqr(5) и S:='a'+'b' эквивалентны по эффективности кода присваиваниям А:=35 и S:='ab'. Это верно и для выражений в вызовах процедур и функций, а также для вычисления индексов массивов.

2. Одинаковые строковые константы хранятся в ЕХЕ-файле в единственном экземпляре. Например, два или более оператора Write ('Stop—') в одной и той же части программы будут использовать одну и ту же копию строковой константы 'Stop—'.

3. По умолчанию логические выражения вычисляются по короткой схеме (в режиме SB-). Это дает минимальный и быстрый код (см. разд. 9.3).

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

5. По умолчанию режим проверки корректности диапазонов значений отключен (режим $R-), что уменьшает код и увеличивает быстродействие.

6. Где только возможно, компилятор заменяет целочисленное умножение на степени числа 2 операцией сдвига влево (shl).

7. По умолчанию производится оптимизация размещения данных в памяти, что задается режимом компиляции $А+.

8. В выполняемый файл не будут включены ветви программы, которые заведомо невыполнимы. Например, строка

if False then Оператор;

будет проигнорирована.

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

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

- 556 -