Strategies for typecase optimization
Description
We contrast two approaches to optimizing the Common Lisp typecase
macro expansion. The first approach is based on heuristics intended
to estimate run time performance of certain type checks involving
Common Lisp type specifiers. The technique may, depending on code size,
exhaustively search the space of permutations of the type checks,
intent on finding the optimal order. With the second technique, we
represent a typecase form as a type specifier,
encapsulating the side-effecting non-Boolean parts so as to appear
compatible with the Common Lisp type algebra operators. The encapsulated
expressions are specially handled so that the \cl type algebra
functions preserve them, and we can unwrap them after a process of Boolean
reduction into efficient \cl code, maintaining the appropriate side
effects but eliminating unnecessary type checks. Both approaches allow us
to identify unreachable code, test for exhaustiveness of the
clauses and eliminate type checks which are calculated to be redundant.
Files
newton.18.els.pdf
Files
(621.8 kB)
Name | Size | Download all |
---|---|---|
md5:8e5216f2e124b5a6f84dd02ea6123c67
|
621.8 kB | Preview Download |