Why is if True slower than if 1 in Python? Shouldn't if True be faster than if 1?
I was trying to learn the timeit module. Starting with the basics, I tried these:
>>> def test1():
... if True:
... return 1
... else:
... return 0
>>> print timeit("test1()", setup = "from __main__ import test1")
0.193144083023
>>> def test2():
... if 1:
... return 1
... else:
... return 0
>>> print timeit("test2()", setup = "from __main__ import test2")
0.162086009979
>>> def test3():
... if True:
... return True
... else:
... return False
>>> print timeit("test3()", setup = "from __main__ import test3")
0.214574098587
>>> def test4():
... if 1:
... return True
... else:
... return False
>>> print timeit("test4()", setup = "from __main__ import test4")
0.160849094391
I am confused by these things:
- According to the response from Mr. Sylvain Defresne in this question, everything is implicitly converted to a
boolfirst and then checked. So why isif Trueslower thanif 1? - Why is
test3slower thantest1even though only thereturnvalues are different? - Like Question 2, but why is
test4a little faster thantest2?
NOTE: I ran timeit three times and took the average of the results, then posted the times here along with the code.
This question does not relate to how to do micro benchmarking(which I did in this example but I also understand that it is too basic) but why checking a 'True' variable is slower than a constant.