[Python-Dev] inspect.py very slow under 2.5
Nick Coghlan
ncoghlan at gmail.com
Wed Sep 6 15:06:33 CEST 2006
Ralf Schmitt wrote:
> Nick Coghlan wrote:
>>
>> It looks like the problem is the call to getabspath() in getmodule().
>> This happens every time, even if the file name is already in the
>> modulesbyfile cache. This calls os.path.abspath() and
>> os.path.normpath() every time that inspect.findsource() is called.
>>
>> That can be fixed by having findsource() pass the filename argument to
>> getmodule(), and adding a check of the modulesbyfile cache *before*
>> the call to getabspath().
>>
>> Can you try this patch and see if you get 2.4 level performance back
>> on Fernando's test?:
>
> no. this doesn't work. getmodule always iterates over
> sys.modules.values() and only returns None afterwards.
> One would have to cache the bad file value, or only inspect new/changed
> modules from sys.modules.
Good point. I modified the patch so it does the latter (it only calls
getabspath() again for a module if the value of module.__file__ changes).
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
---------------------------------------------------------------
http://www.boredomandlaziness.org
More information about the Python-Dev
mailing list