[asdf-devel] Performance hit in TRUENAMIZE

Juan Jose Garcia-Ripoll juanjose.garciaripoll at googlemail.com
Sat Jul 17 22:08:59 UTC 2010


These are the differences in execution time for SBCL, comparing a call to
PROBE-FILE, with IGNORE-ERRORS+TRUENAME. Differences in ECL are more
dramatic. I attach a patch file that implements the change I suggested.

Note that in order to produce this patch I had to add a workaround: ASDF
calls truenamize with wildcard paths without really caring for the location
of wildcards. My wrapper checks for those wildcards, refusing to produce a
truename but avoiding to signal an error, which is more efficient -- but it
all looks fragile and not future proof.

Juanjo

(defun test1 ()
  (dotimes (i 100000)
    (probe-file "Inexistent file")))

(defun test2 ()
  (dotimes (i 100000)
    (ignore-errors (truename "Inexistent file"))))

(time (test1))
Evaluation took:
  2.227 seconds of real time
  2.171720 seconds of total run time (1.786088 user, 0.385632 system)
  [ Run times consist of 0.028 seconds GC time, and 2.144 seconds non-GC
time. ]
  97.53% CPU
  5,319,066,321 processor cycles
  319,996,672 bytes consed

(time (test2))
Evaluation took:
  3.371 seconds of real time
  3.303481 seconds of total run time (2.888650 user, 0.414831 system)
  [ Run times consist of 0.044 seconds GC time, and 3.260 seconds non-GC
time. ]
  97.98% CPU
  8,055,475,317 processor cycles
  470,401,824 bytes consed


On Fri, Jul 16, 2010 at 11:35 PM, Juan Jose Garcia-Ripoll <
juanjose.garciaripoll at googlemail.com> wrote:

> On Fri, Jul 16, 2010 at 12:54 AM, edgar <edgar-rft at web.de> wrote:
>
>> I think the main problem here is that some implementations
>> (notably CLISP) differ between files and directories, so
>> PROBE-FILE cannnot be used to probe files AND directories.
>
>
> Well, SBCL and ECL do not have that problem, AFAIK. But TRUENAMIZE also
> seems to be used with files, not directories, from what I could gather
> during the debugging of ASDF. I would abstract those calls into a function
> PROBE-FILE-AND-DIRECTORY and use PROBE-FILE internally in this function. The
> purpose would be clear and sensible  implementations might profit from that
> -- maybe the terrible startup times for ASDF might be decreased this way.
>
> Juanjo
>
> --
> Instituto de Física Fundamental, CSIC
> c/ Serrano, 113b, Madrid 28006 (Spain)
> http://juanjose.garciaripoll.googlepages.com
>



-- 
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20100718/f4548762/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: asdf-probe-file.diff
Type: application/octet-stream
Size: 2861 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20100718/f4548762/attachment.obj>


More information about the asdf-devel mailing list