<div class="gmail_quote">On Fri, Mar 19, 2010 at 10:03 AM, Andy Hefner <span dir="ltr"><<a href="mailto:ahefner@gmail.com">ahefner@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
IMO, ECL's non-CLOS performance is sufficiently lackluster that<br>
special effort spent optimizing CLOS would be misdirected.<br>
</blockquote></div><br>Not really. Things can be worked out in parallel, as they are _totally_ unrelated. CLOS performance is different from compiler optimizations, declarations, core library performance, etc.<br><br>I am just dropping ideas for people to catch them up, specially those that are easy to implement. If what you mean is that _I_ should focus on other stuff, then maybe you are right, and in the case of a single developer the focus should be different.<br>
<br>How can CLOS be sped up:<br><br>- Right now there are two branches for function calls: dispatch on object type and then dispatch on whether it is ECL's generic or not. Flatten this, maybe including other C types (t_instance -> t_instance, t_simple_funcallable, t_generic_funcallable, ...)<br>
<br>- Instead of having ONE dispatch function, implement several smaller ones that can be used when we do not have a complicated generic function: no EQL specialization, no AFTER, etc.<br><br>- Revise calling conventions for methods and how their lambda functions should look like.<br>
<br>- Revise optimizations for slot access. We had to remove ALL optimizations because of the MOP. Look for ways to restore this back.<br><br>Where would this have a greater impact:<br><br>- Libraries that make intensive use of CLOS. Some people enjoy using CLOS for programming, and many libraries out there use it more often than they should -- cl-unicode, for instance.<br>
<br>- I/O by means of FORMAT, Gray streams, PPRINT, all these routines depend exclusively on CLOS for performing input and output.<br><br>Juanjo<br clear="all"><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br>
<a href="http://tream.dreamhosters.com">http://tream.dreamhosters.com</a><br>