User Tools


Declaration OPTIMIZE

Syntax

  • (optimize {quality | (quality value)}*)

Arguments

Valid Context

Binding Types Affected

None.

Description

Advises the compiler that each quality should be given attention according to the specified corresponding value. Each quality must be a symbol naming an optimize quality; the names and meanings of the standard optimize qualities are shown below.

Name Meaning
compilation-speed speed of the compilation process
debug ease of debugging
safety run-time error checking
space both code size and run-time space
speed speed of the object code

There may be other, implementation-defined optimize qualities.

A value 0 means that the corresponding quality is totally unimportant, and 3 that the quality is extremely important; 1 and 2 are intermediate values, with 1 the neutral value. (quality 3) can be abbreviated to quality.

Note that code which has the optimization (safety 3), or just safety,is called safe code.

The consequences are unspecified if a quality appears more than once with different values.

Examples

(defun often-used-subroutine (x y) (declare (optimize (safety 2))) (error-check x y) (hairy-setup x) (do ((i 0 (+ i 1)) (z x (cdr z))) ((null z)) ;; This inner loop really needs to burn. (declare (optimize speed)) (declare (fixnum i))))

OFTEN-USED-SUBROUTINE

See Also

Notes

An optimize declaration never applies to either a variable or a function binding. An optimize declaration can only be a free declaration. For more information, see section {\secref\DeclScope}.

\issue{OPTIMIZE-DEBUG-INFO:NEW-QUALITY}