timeit.repeat
を使用する 2 つの異なる方法を比較して、いくつかの簡単なベンチマークを実行しました_accumulator_
。
def testAccumPlusEqual():
x = 0
for i in range(100):
x += 1
return x
def testAccumEqualPlus():
x = 0
for i in range(100):
x = x + 1
return x
私の実装timeit.repeat
は次のとおりです。
if __name__ == '__main__':
import timeit
print(timeit.repeat("testAccumPlusEqual()",
setup="from __main__ import testAccumPlusEqual"))
print(timeit.repeat("testAccumEqualPlus()",
setup="from __main__ import testAccumEqualPlus"))
結果は以下のとおりです。
>>>
[8.824021608811469, 8.80440620087051, 8.791231916848997]
[8.101681307351758, 8.143080002052649, 8.181129610882778]
確かに、大まかに言えば、この時間差は目立たないかもしれませんが、大規模に使用すると速度が低下する可能性があります。だから私は本当に尋ねていると思います:
私が見たどこからでも、デファクト スタンダードは で累積する+=
ことですが、それでもそうすべきでしょうか?
+=
よりもパフォーマンスが悪いのはなぜx=x+
ですか?
注: Windows 7 64 ビットで CPython 3.3.2 を使用する (32 ビット バージョンの Python を使用)