- Notifications
You must be signed in to change notification settings - Fork2
Description
By default SBCL implements
evalby calling the native code compiler.SBCL also includes an interpreter for use in special cases where using the compiler is undesirable, for example due to compilation overhead.
https://www.sbcl.org/manual/#Interpreter
In other words, SBCL evaluates code given toeval by wrapping the form to be evaluated in a lambda, compiling that, and funcall-ing the compiled function.
So, to use the interpreter:
(let ((sb-ext:*evaluator-mode*:interpret)) (eval ...))
In the blog post"compilation speed of CL implementations", the author needed to re-build his entire project. He compared the speed of the SBCL's compiler, and the interpreter:
| SBCL's compiler | SBCL's interpreter | |
|---|---|---|
| build project | 70s | 2.5s |
=> it's a drastic speed gain, in his case.
It might be that SBCL's extensive optimizations are slowing down the compiler, and aren't needed in the author's case (which is building a static website).