En Tue, 26 Feb 2008 12:33:01 -0200, <[EMAIL PROTECTED]> escribió:
> On Feb 26, 8:14 am, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote:

>> I guess it's the method lookup that's the slow part.  Factor it out of  
>> the
>> loop and measure again::
>>
>>     adict_get = adict.get
>>     for _ in xrange(M):
>>         for k in keys1:
>>             r = adict_get(k, None)
>>         for k in keys2:
>>             r = adict_get(k, None)
>
> Can't be.  The string 'get' is only hashed once, since it's hard-coded
> into the script, and looking it up can't be any slower than looking up
> __getitem__.

In the original code, the 'get' method is searched a lot of times (every  
time it's called), not just once; Python can't assume that it remains the  
same at every invocation.

And __getitem__ isn't searched by name; there is a predefined slot in the  
type structure for it. In case the method were overriden in Python code,  
the slot is replaced with a wrapper function that calls the Python code.

-- 
Gabriel Genellina

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to