Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Руководство по Borland Pascal.doc
Скачиваний:
76
Добавлен:
02.05.2014
Размер:
2.05 Mб
Скачать

Оптимизация кода

Некоторые параметры компилятора, поскольку они включают в

программу код проверки и обработки ошибок, влияют как на размер,

так и на скорость вашего кода. Хотя такие параметры полезно ис-

пользовать при разработке программы, без них вы можете получить

более быстрый и компактный код.

Приведем параметры, влияющие на оптимизацию кода. Каждая ди-

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

раметра компилятора. Рассмотрим использование для завершающей

компиляции следующих параметров:

* Выравнивание данных на границу слова Word Align Data

({$A+}) выравнивает переменные и типизированные константы

на границу слова, что дает в системах с процессорами 80x86

более быстрый доступ к памяти.

* Выключение полного вычисления булевских выражений Complete

Boolean Evaluation ({$B-}) дает код, который в зависимости

от установки ваших булевских выражений более быстро рабо-

тает.

* При выключенной эмуляции Emulation ({$E-}) компилятор не

будет выполнять компоновку с библиотекой исполняющей сис-

темы, эмулирующей сопроцессор 80x87. Она должна использо-

вать сопроцессор 80х87 (в случае его наличия) или стан-

дартный 6-байтовый тип Real. При компиляции приложений

Windows эмуляция не используется; при наличии директивы

эмуляции компилятор ее игнорирует.

* Когда задана генерация кода процессора 80286 Code

Generation ({$G+}), компилятор для улучшения генерации ко-

да использует дополнительные инструкции процессора 80286.

Скомпилированные таким образом программы не будут работать

на процессорах 8088 и 8086.

* При выключенной проверке ввода-вывода I/O Checking ({$I-})

компилятор не проверяет ошибки ввода-вывода. Вызвав пре-

допределенную функцию IOResult, вы можете самостоятельно

проверить ошибки ввода-вывода.

* Когда выключена числовая обработка Numeric Processing

({$N-}), компилятор генерирует код, способный выполнять

все операции с плавающей точкой с помощью встроенного

6-байтового типа Real. Если параметр Numeric Processing

включен, ({$N+}), компилятор использует сопроцессор 80х87

или эмулирует сопроцессор с помощью программного обеспе-

чения, в зависимости от наличия сопроцессора 80х87. Полу-

ченный в результате код может использовать четыре дополни-

тельных вещественных типа (Single, Double, Extended и

Comp).

* Когда выключена проверка диапазона Stack Checking ({$R-}),

компилятор не выполняет проверку на ошибки индексирования

массива и присваивание значения вне диапазона.

* При выключенной проверке стека Stack Checking ({$S-}) ком-

пилятор не обеспечивает достаточного пространства в стеке

для каждого вызова процедуры или функции.

* Когда включена нестрогая проверка строк-переменных Relaxed

String Var Checking ($V-}), компилятор не проверяет пара-

метры-переменные строкового типа. Это позволяет вам пере-

давать строки фактических параметров, имеющие длину, от-

личную от длины, определенной для формального парамет-

ра-переменной.

* При разрешении расширенного синтаксиса Extended Syntax

({$X+}) вы можете использовать вызовы функций как операто-

ры, поскольку результат функциональных вызовов может отб-

расываться.

Оптимизация вашего кода с помощью этих параметров имеет два

преимущества. Во-первых, это делает ваш код более компактным и

быстрым. Во-вторых, позволяет делать вам некоторые вещи, которые

вы обычно делать не можете. Однако, все эти параметры вносят не-

который риск, поэтому используйте их аккуратно, и если ваша прог-

рамма начинает вести себя странно, вернитесь к исходной ситуации.

Соседние файлы в папке Delphi