GC is very expensive: am I doing something wrong?
Steven D'Aprano
steven at REMOVE.THIS.cybersource.com.au
Tue Mar 23 02:32:13 EDT 2010
On Mon, 22 Mar 2010 22:05:40 -0700, Paul Rubin wrote:
> Antoine Pitrou <solipsis at 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
More information about the Python-list
mailing list