[Python-Dev] C extension import time
Antoine Pitrou
solipsis at pitrou.net
Fri Oct 11 14:51:56 CEST 2013
More information about the Python-Dev mailing list
Fri Oct 11 14:51:56 CEST 2013
- Previous message: [Python-Dev] C extension import time
- Next message: [Python-Dev] C extension import time
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Le Fri, 11 Oct 2013 14:24:29 +0200, Stefan Krah <stefan at bytereef.org> a écrit : > Hi, > > recently there has been some talk about reducing import times. It > seems that the current import strategy for C extensions (i.e. > importing the extension at the bottom of the .py file) is quite slow: > > > ==================== > > import sys > > for i in range(10000): > import decimal > del sys.modules('decimal') > del sys.modules('_decimal') > > ==================== Try the following: $ ./python -m timeit -s "modname='decimal'; import sys" \ "__import__(modname); del sys.modules[modname]" 1000 loops, best of 3: 2.21 msec per loop $ ./python -m timeit -s "modname='_decimal'; import sys" \ "__import__(modname); del sys.modules[modname]" 10000 loops, best of 3: 112 usec per loop Now compare with the time taken to simply find the module loader: $ ./python -m timeit -s "modname='_decimal'; import importlib" \ "importlib.find_loader(modname)" 10000 loops, best of 3: 87.2 usec per loop So find_loader() is the bigger contributor here. Note that find_loader() can have varying performance: $ touch empty.py $ ./python -m timeit -s "modname='empty'; import importlib" \ "importlib.find_loader(modname)" 10000 loops, best of 3: 24.4 usec per loop When trying to improve import performance, I noticed that merely diagnosing the bottlenecks is not always easy. Regards Antoine.
- Previous message: [Python-Dev] C extension import time
- Next message: [Python-Dev] C extension import time
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list