Некоторые параметры компилятора, поскольку они включают в программу код проверки и обработки ошибок, влияют как на размер, так и на скорость вашего кода. Хотя такие параметры полезно использовать при разработке программы, без них вы можете получить более быстрый и компактный код.
Приведем параметры, влияющие на оптимизацию кода. Каждая директива компилятора сопровождается указанием соответствующего параметра компилятора. Рассмотрим использование для завершающей компиляции следующих параметров:
Выравнивание данных на границу слова 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+}) вы можете использовать вызовы функций как операторы, поскольку результат функциональных вызовов может отбрасываться.
Оптимизация вашего кода с помощью этих параметров имеет два преимущества. Во-первых, это делает ваш код более компактным и быстрым. Во-вторых, позволяет делать вам некоторые вещи, которые вы обычно делать не можете. Однако, все эти параметры вносят некоторый риск, поэтому используйте их аккуратно, и если ваша программа начинает вести себя странно, вернитесь к исходной ситуации.
8 8 8
| |