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