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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4