On Mon, 22 Mar 2010 22:05:40 -0700, Paul Rubin wrote:

> Antoine Pitrou <solip...@pitrou.net> writes:
>> "Orders of magnitude worse", in any case, sounds very exaggerated.
> 
> The worst case can lose orders of magnitude if a lot of values hash to
> the same bucket.


Well, perhaps one order of magnitude.


>>> for i in xrange(100):
...     n = 32*i+1
...     assert hash(2**n) == hash(2)
...
>>> d1 = dict.fromkeys(xrange(100))
>>> d2 = dict.fromkeys([2**(32*i+1) for i in xrange(100)])
>>>
>>> from timeit import Timer
>>> setup = "from __main__ import d1, d2"
>>> t1 = Timer("for k in d1.keys(): x = d1[k]", setup)
>>> t2 = Timer("for k in d2.keys(): x = d2[k]", setup)
>>>
>>> min(t1.repeat(number=1000, repeat=5))
0.026707887649536133
>>> min(t2.repeat(number=1000, repeat=5))
0.33103203773498535




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

Reply via email to