<br><br><div class="gmail_quote">On Tue Oct 07 2014 at 2:24:52 PM Skip Montanaro <<a href="mailto:skip.montanaro@gmail.com">skip.montanaro@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Oct 7, 2014 at 12:46 PM, John Smith <<a href="mailto:sansprivacy@gmail.com" target="_blank">sansprivacy@gmail.com</a>> wrote:<br>
> pyc-only install sees mediocre performance. (pyc's are built using<br>
> compileall.py, then source .py's removed before packaging)<br>
<br>
(Warning: it's been probably a decade since I looked at any of this<br>
stuff, so treat this response as mere conjecture.)<br>
<br>
I'd take a look at startup time and things like stat(2) calls in the<br>
presence or absence of .py files. It's possible that it tries all<br>
other possible file extensions before considering .pyc. If you have a<br>
long sys.path, it would then run through all the other file extension<br>
possibilities before trying the .pyc. OTOH, if the .py is present, it<br>
might be found early in the search, then as an optimization, look for<br>
a .pyc file it can use rather than compiling the .py file. How long is<br>
sys.path?<br></blockquote><div><br></div><div>The extension check is per sys.path entry so sys.path is the outer loop, not the file extension list. The relevant code is all in <a href="https://hg.python.org/cpython/file/05f70805f37f/Python/import.c">https://hg.python.org/cpython/file/05f70805f37f/Python/import.c</a> for Python 2.7  and the search code is <a href="https://hg.python.org/cpython/file/05f70805f37f/Python/import.c#l1291">https://hg.python.org/cpython/file/05f70805f37f/Python/import.c#l1291</a> .</div><div><br></div><div>But with the code being a black box there is no good way to answer this question. E.g. if they have a custom finder that is very costly when there is no source then that could explain this. But you're talking **app** performance and not import performance, so either something on your system or in that code is very quirky that is leading to an actual performance loss to that level (import costs are usually washed out and bytecode is literally just the internal representation of source after compilation so there is no semantic difference at execution time if the same source is used).</div></div>