[Distutils] Experience of setuptools' cache design

Phillip J. Eby pje at telecommunity.com
Fri Jan 18 19:04:43 CET 2008


At 12:50 PM 1/18/2008 -0500, Jim Fulton wrote:

>On Jan 18, 2008, at 12:32 PM, Phillip J. Eby wrote:
>
>>At 10:13 AM 1/18/2008 -0500, Jim Fulton wrote:
>...
>>>  I would want some way to prevent it, especially in a
>>>production environment.
>>
>>The only way to absolutely prevent it is to install things
>>unzipped.  And if you're going to do that, you might as well
>>use .egg-info style eggs, since that will give better runtime
>>performance.  That is, for an egg "foo-1.2-py2.5-platform.egg", you
>>would unzip its contents to the target directory and then rename the
>>extracted EGG-INFO directory to "foo-1.2-py2.5-platform.egg-info".
>
>
>Thanks.
>
>Can you briefly explain or provide a link to something that explains
>the performance improvement?

Fewer directories on sys.path = better import performance, compared 
to individually putting a series of .egg directories on sys.path.

This doesn't apply so much for zipped eggs, because the zip 
directories get cached.  Overall, the tradeoffs are:

zipped .egg files = faster imports + some startup overhead to read 
the zip directories
.egg directories  = slower imports due to lots of stat-ing
.egg-info         = "normal" imports + no extra startup overhead

Zipped .egg files have the fastest import times overall, assuming you 
don't have so many eggs to read that the overhead wipes out your 
gains.  Extracting all eggs to the same directory is second fastest, 
with .egg directories (i.e. --always-unzip) being the slowest thing 
you could possibly do.



More information about the Distutils-SIG mailing list