optimize (original) (raw)
ANSI Common Lisp 3 Evaluation and Compilation
3.8 Dictionary Evaluation and Compilation
3.8.25 optimize | Declaration |
---|
Syntax:
(optimize {quality | (quality value)}*)
Arguments:
quality - an optimize quality.
value - one of the integers 0, 1, 2, or 3.
Valid Context:
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 in the next figure.
Optimize qualities
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)) ))
See Also:
declare,declaim,proclaim, Section 3.3.4 Declaration Scope
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 3.3.4 Declaration Scope.
Allegro CL Implementation Details:
None.