Borland Pascal. Руководство пользователя

6cac1dc9

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


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

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

* Выравнивание данных на границу слова 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+}) вы можете использовать вызовы функций как операто- ры, поскольку результат функциональных вызовов может отб- расываться.

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


Содержание раздела