Surprising timeit result

John O'Hagan research at johnohagan.com
Tue Oct 27 00:36:12 EDT 2009


I sometimes use timeit to see if it's better to check if something needs doing, 
or to just do it anyway. This result was surprising:

setup =  'd1 = {"a":0, "b":0}; d2 = {"a":0, "b":1}'

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.

Regards,

John



More information about the Python-list mailing list