Opened 12 years ago

Last modified 11 years ago

#76 new enhancement

Slime (swank) fuzzy completion very slow

Reported by: ehuelsmann Owned by: somebody
Priority: major Milestone: unscheduled
Component: other Version:
Keywords: performance Cc:
Parent Tickets:

Description

In a mail to the development list, Anton Vodonosov writes about the relative speed of ABCL, CCL and Clisp on slime fuzzy completion.

ABCL is by far the slowest.

Change History (3)

comment:1 Changed 11 years ago by ehuelsmann

To reproduce, in ABCL run (inside the slime/ directory):

 $ abcl

 (require 'asdf)
 (asdf:oos 'asdf:load-op :swank)
 (swank-loader::init :load-contribs t)

For clisp, run in the same directory, with these commands:

 $ clisp

 (load "swank-loader")
 (swank-loader::init :load-contribs t)

The form to be executed (and hence profiled) is:

 (let ((swank::*buffer-package* *package*))
   (swank::fuzzy-completions "de" 'cl-user)))

Using (TIME ...) on the given form, ABCL returns 0.2 seconds, while clisp returns 0.08 seconds. Clearly, clisp still is a lot faster, but I'd be surprised if ABCL is still "intolerably slow".

comment:2 Changed 11 years ago by ehuelsmann

Hottest code - data collected with the hot spot profiler:

 24.1       65 SWANK::FUZZY-CONVERT-MATCHING-FOR-EMACS
 26.3       71 SOME
 35.9       97 SWANK::COMPUTE-MOST-COMPLETIONS
 45.9      124 SWANK::RECURSIVELY-COMPUTE-MOST-COMPLETIONS
 48.5      131 SWANK::COMPUTE-HIGHEST-SCORING-COMPLETION
 71.5      193 SWANK::FUZZY-FIND-MATCHING-SYMBOLS
 85.2      230 SWANK::FUZZY-GENERATE-MATCHINGS
100.0      270 SWANK::FUZZY-COMPLETION-SET

Evaluate this form to reproduce:

(progn
  (prof:with-profiling ()
    (let ((swank::*buffer-package* *package*))
      (swank::fuzzy-completions "de" 'cl-user)))
  (prof:show-hot-counts))

comment:3 Changed 11 years ago by ehuelsmann

Keywords: performance added
Milestone: unscheduled

Unscheduled. Waiting for someone to do more research; the hot-spot list still looks roughly the same.

Note: See TracTickets for help on using tickets.