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.<br><br>
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.<br>
<br>Juanjo<br><br>(defun test1 ()<br> (dotimes (i 100000)<br> (probe-file "Inexistent file")))<br><br>(defun test2 ()<br> (dotimes (i 100000)<br> (ignore-errors (truename "Inexistent file"))))<br>
<br>(time (test1))<br>Evaluation took:<br> 2.227 seconds of real time<br> 2.171720 seconds of total run time (1.786088 user, 0.385632 system)<br> [ Run times consist of 0.028 seconds GC time, and 2.144 seconds non-GC time. ]<br>
97.53% CPU<br> 5,319,066,321 processor cycles<br> 319,996,672 bytes consed<br><br>(time (test2))<br>Evaluation took:<br> 3.371 seconds of real time<br> 3.303481 seconds of total run time (2.888650 user, 0.414831 system)<br>
[ Run times consist of 0.044 seconds GC time, and 3.260 seconds non-GC time. ]<br> 97.98% CPU<br> 8,055,475,317 processor cycles<br> 470,401,824 bytes consed<br><br><br><div class="gmail_quote">On Fri, Jul 16, 2010 at 11:35 PM, Juan Jose Garcia-Ripoll <span dir="ltr"><<a href="mailto:juanjose.garciaripoll@googlemail.com">juanjose.garciaripoll@googlemail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im"><div class="gmail_quote">On Fri, Jul 16, 2010 at 12:54 AM, edgar <span dir="ltr"><<a href="mailto:edgar-rft@web.de" target="_blank">edgar-rft@web.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div>I think the main problem here is that some implementations</div>
(notably CLISP) differ between files and directories, so<br>
PROBE-FILE cannnot be used to probe files AND directories.</blockquote></div><div><br></div></div><div>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.</div>
<div><div></div><div class="h5">
<div><br></div><div>Juanjo</div><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com">http://juanjose.garciaripoll.googlepages.com</a><br>