if True
がPythonでif 1
より遅いのはなぜですか? if True
はif 1
より速いはずですか?Trueの方が1よりも遅いのはなぜですか?
私はtimeit
モジュールを習得しようとしていました。基礎から始めて、私が試したこれら:私はこれらの事で混乱しています
>>> 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
:
- this question氏シルヴァンDefresneからの応答によると、すべてが暗黙のうちに
bool
最初に変換され、チェックした。だからif True
がif 1
より遅いのはなぜですか? return
の値だけが異なっていても、がtest1
より遅いのはなぜですか?- 質問2と同様ですが、なぜ
test4
少しですよりtest2
?
注:私はtimeit
を3回実行し、結果の平均を取った後、コードと共にこの時間を掲載しました。
この質問は、私がこの例で行ったことですが、それはあまりにも基本的であると理解していますが、なぜ '真'変数をチェックするのが定数よりも遅いのかとは関係ありません。
あなたのテストは小さすぎると思います。そして3回の実行の平均は十分ではありません:p – keyser
私は理解しています:)でも、テストケースは考えるのはあまりにも基本的です。しかし、我々はどこか右に開始する必要があります:) – thiruvenkadam
可能な複製[どのくらいのマイクロベンチマークを実行する必要がありますか?](http://stackoverflow.com/questions/2857470/how-long-does-a-microbenchmark-need- –