Subject: Re: format for list printing
From: Erik Naggum <clerik@naggum.no>
Date: 1997/09/06
Newsgroups: comp.lang.lisp
Message-ID: <3082529264581283@naggum.no>



* Larry Hunter
| A quick test in Franz Allegro CL 4.3.1 on a unix box shows that it
| depends on the optimization settings.  If you compile with (optimize
| (speed 1) (debug 2)) -- the default -- then using a local variable to
| hold the formatter closure is about 25% faster.  However, if you compile
| with (optimize (speed 3) (debug 0)), then they are effectively identical.

optimization in Allegro CL 4.3.1 is controlled by compiler switches.  these
are variables that either hold a value or a function.  if the value is
non-nil or the value of the function is non-nil, the switch is true.

e.g., compilation of format strings is controlled by

    compiler:compile-format-strings-switch

which has a functional value by default.

    user(15): (describe compiler:compile-format-strings-switch)
    #<Function speed > space @ #x165bd2> is a compiled-function.
      The arguments are (safety space speed debug)

we infer that these switch functions receives the values of the various
`optimize' declarations when called by the compiler, so we can write our
own, or we could use a constant value for the appropriate switch.

incidentally, it is sufficient to (declaim (optimize (space 0))) to get
Allegro CL to compile format strings if speed is at least 1.

this is documented in the Allegro CL User Guide, and you should get some
messages when you fire up Allegro CL that indicate how to learn more:

;; Optimization settings: safety 1, space 1, speed 1, debug 2.
;; For a complete description of all compiler switches given the current
;; optimization settings evaluate (explain-compiler-settings).

#\Erik
-- 
404 You're better off without that file.  Trust me.