qiita.com/tags/python で,i += 1 より i = i+1 のほうが速いというのがあったが,そもそも,10000000 回!!もやって所要時間が 0.69685sec と 0.67206sec なんだから,誤差範囲でしょう。
ちなみに,Julia でやったら,誤差範囲で同じようなものだった。
コンパイルするから,記述の差は吸収されてしまうのだろうなあ。
@time begin
i = 0
while i < 10_000_000
i += 1
end
end
# 0.520408, 0.507725, 0.509720, 0.508239, 0.530775 などなど
@time begin
i = 0
while i < 10_000_000
i = i + 1
end
end
# 0.503195, 0.521761, 0.483759, 0.513919, 0.516283 などなど
繰り返すが,こんな差は,鼻くそみたいなものだ。(^_^;)
クヌースは(C 言語ではあるが) += を推奨している。
abcdefghijklmn += 1
と
abcdefghijklmn2 = abcdefghijklmn + 1
を見極める余計な注意力を必要としないことをよしとするのだ。
Python での実行例
Python では i = i + 1 のほうが速いだろうという考察もあるようだが。
from __future__ import print_function
import timeit
print("i+=1\t", timeit.timeit("while i<10000000: i+=1", setup="i=0"))
print(" i=i+1\t", timeit.timeit("while i<10000000: i=i+1", setup="i=0"))
print("a[0]+=1\t", timeit.timeit("while a[0]<10000000: a[0]+=1", setup="a=[0]"))
print("a[0]=a[0]+1\t", timeit.timeit("while a[0]<10000000: a[0]=a[0]+1", setup="a=[0]"))
#=
i+=1 0.6968548460000079
i=i+1 0.6720683110000039
a[0]+=1 1.513158634000007
a[0]=a[0]+1 1.4887571600000058
=#