On Mon, May 08, 2006 at 01:03:08PM -0500, Brian Downing wrote:
On Mon, May 08, 2006 at 06:49:33PM +0100, Antonio Menezes Leitao wrote:
Another very good improvement would be anything that speeds up the computation of the completions. It is taking too long for normal interactive use, at least in my centrino laptop.
Okay, there has been no though paid to optimization of the completion core, so speedups shouldn't be hard. I've never had a problem with it though.
I've committed some micro-optimizations and un-generalizations (i.e. it only works on simple-strings now), which have resulted in a speed increase of about 4-5x for the core algorithm on SBCL. At this point most of the time is spent on the emacs side rendering the buffer for long result lists, which I don't know how to optimize. There's a currently unused LIMIT argument to the FUZZY-COMPLETIONS slimefun. This will only send a certain number of results back to emacs, which may help with rendering speed at the cost of missing low-scoring results.
I've only got SBCL and Lispworks to test with here, so please let me know if I've broken things for your favorite Lisp.
2006-05-24 Brian Downing bdowning@lavos.net
* swank.lisp (recursively-compute-most-completions & friends): Micro-optimize the fuzzy completion engine, improving performace by a factor of about 4 on SBCL. However, it will only work on simple-strings now, and CHAR= is burned in instead of being an option. I don't think this is too much of a limitation. At this point rendering the results on the emacs side takes much longer than finding them for long result lists.
Hope this helps, -bcd