|
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:
-
declaration or proclamation
- 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.
|