Optimization (Object Pascal)
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.