Surprising timeit result

Paul Rubin http
Tue Oct 27 00:47:02 EDT 2009


"John O'Hagan" <research at johnohagan.com> writes:
> Timer('d1.update(d2)', setup).timeit()
> 2.6499271392822266
> 
> Timer('if d1 != d2: d1.update(d2)', setup).timeit()
> 1.0235211849212646
> 
> In other words, in this case it's substantially quicker to check for
> something and then proceed, than it is to just proceed! I'm curious
> about the explanation.

Looks to me like in both versions, d2 is only initialized once, so
the d1.update in the second case only gets called on the first loop.
It's not so surprising that comparing d1 and d2 is faster than
actually updating d1.



More information about the Python-list mailing list