裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

枝葉末節

2021年06月07日 | ブログラミング

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
=#

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村