Optimization in Common Lisp, and its application to Climb



Common Lisp is a dynamically typed language. Even if it is not a priori oriented towards performance, the language provides tools for optimization. Nevertheless, a gain of performance may have an impact on the genericity of the code, optimization limiting it. Climb is an image processing library written in Common Lisp, aiming to be compared with equivalents written in static languages, such as C++. The goal is to benefit from the genericity offered by Common Lisp for writing an image processing library. But such a library also has performance constraints. The goal is then to find a middle ground between those two aspects. We will present the different functionnalities that Common Lisp provides for optimization, and their use in Climb to make the library faster, without compromising the genericity of the library. We will also present the first results of this optimization work, the work that is left to be done, and the benefits of using Common Lisp for such a task.