[asdf-devel] performance of find-system (on sbcl)

Attila Lendvai attila.lendvai at gmail.com
Mon Nov 16 13:27:24 UTC 2009

dear list,

find-system is so slow that i took the time to look into it. this is
what i've used to test:

(sb-sprof:with-profiling ()
  (trace sb-fasl::load-as-source)
  (time (labels ((recurse (system-name)
                   (let ((system (asdf:find-system system-name nil)))
                     (dolist (child (rest (first
(asdf:component-depends-on 'asdf:compile-op system))))
                       (recurse (asdf:find-system child nil))))))
          (recurse (asdf:find-system :hu.dwim.walker nil)))))

out of the box run:

Evaluation took:
  3.233 seconds of real time
  2.350000 seconds of total run time (2.120000 user, 0.230000 system)
  [ Run times consist of 0.410 seconds GC time, and 1.940 seconds non-GC time. ]
  72.69% CPU
  15,573 forms interpreted
  2,688 lambdas converted
  5,615,673,160 processor cycles
  15 page faults
  128,748,160 bytes consed

when adding the following to asdf:find-system, just around the cl:load call:

#+sbcl (sb-ext:*evaluator-mode* :interpret)

Evaluation took:
  1.506 seconds of real time
  0.740000 seconds of total run time (0.640000 user, 0.100000 system)
  [ Run times consist of 0.110 seconds GC time, and 0.630 seconds non-GC time. ]
  49.14% CPU
  16,582 forms interpreted
  56 lambdas converted
  2,764,841,332 processor cycles
  2 page faults
  58,959,808 bytes consed

any thoughts on this?


More information about the asdf-devel mailing list