[Python-Dev] Startup time (original) (raw)
Skip Montanaro skip@pobox.com
Fri, 16 May 2003 14:00:24 -0500
- Previous message: [Python-Dev] Startup time
- Next message: [Python-Dev] Startup time
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
mal> FWIW, I've removed the re usage from encodings/__init__.py.
mal> Could you check whether this makes a difference in startup time
mal> now?
Well... Not really, but it's not your fault. site.py imports distutils.util which imports re. It does a fair amount of regex compiling, some at the module level, so deferring "import re" may take a couple minutes of work. Hang on...
Okay, now re isn't imported. The only runtime difference between the two sets of times below is encodings/init.py 1.18 vs 1.19. Each set of times is for this command:
% time ./python.exe -c pass
Everything was already byte compiled. The times reported were the best of five. I tried to quiet the system as much as possible. Still, since the amount of work being done is minimal, it's tought to get a good feel for any differences.
version 1.18 (w/ re)
real 0m0.143s
user 0m0.030s
sys 0m0.060s
version 1.19 (no re)
real 0m0.142s
user 0m0.040s
sys 0m0.060s
Note the rather conspicuous lack of any difference. The only modifications to my Lib tree are these:
M cgitb.py
M warnings.py
M distutils/util.py
M encodings/__init__.py
M test/test_bsddb185.py
I verified that site was imported from my Lib tree:
% ./python.exe -v -c pass 2>&1 | egrep 'site'
# /Users/skip/src/python/head/dist/src/build.opt/../Lib/site.pyc matches /Users/skip/src/python/head/dist/src/build.opt/../Lib/site.py
import site # precompiled from /Users/skip/src/python/head/dist/src/build.opt/../Lib/site.pyc
# cleanup[1] site
It would appear that the encodings stuff isn't getting imported on my platform (Mac OS X):
% ./python.exe -v -c pass 2>&1 | egrep 'encoding'
%
Looking at site.py shows that the encodings package is only imported on win32 and only if the codecs.lookup() call fails. Oh well, we don't care about minority platforms. ;-) More seriously, to test your specific change someone will have to run the check Windows.
To contribute something maybe positive, here's the same timing comparison using my changed version of distutils.util vs CVS:
CVS:
real 0m0.155s
user 0m0.050s
sys 0m0.070s
Changed (no module-level re import):
real 0m0.143s
user 0m0.070s
sys 0m0.040s
It appears eliminating "import re" has only a very small effect for me. It looks like an extra 6 modules are imported (25 vs 19).
Skip
- Previous message: [Python-Dev] Startup time
- Next message: [Python-Dev] Startup time
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]