0

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 を使用)

4

1 に答える 1