Optimization (Object Pascal)

From Appmethod Topics
Jump to: navigation, search

Go Up to Object Pascal Compiler Directives (List) Index

Type

Switch

Syntax

{$O+} or {$O-} {$OPTIMIZATION ON} or {$OPTIMIZATION OFF}

Default

{$O+} {$OPTIMIZATION ON}

Scope

Local (except Global for the Object Pascal Cross Compiler for the iOS Device)



The $O directive controls code optimization. In the {$O+} state, the compiler performs a number of code optimizations, such as placing variables in CPU registers, eliminating common subexpressions, and generating induction variables. In the {$O-} state, all such optimizations are disabled.

Other than for certain debugging situations, you should never have a need to turn optimizations off. All optimizations performed by the Object Pascal compiler are guaranteed not to alter the meaning of a program. In other words, the compiler performs no "unsafe" optimizations that require special awareness by the programmer.

Notes:

  • The $O directive can only turn optimization on or off for an entire procedure or function. You cannot turn optimization on or off for a single line or group of lines within a routine.
  • For iOS applications that target the iOS Device (and thus use the compiler for the iOS device), the $O directive has global scope. The compiler does not generate any warning or hint messages, but the optimizer uses the last setting, if multiple $O options exist in a single source code file.
    However, for iOS applications that target the iOS Simulator (and use the compiler for the iOS simulator), the $0 directive has local scope, as do the Object Pascal desktop compilers.