値を1大きくする速さ
正直どうでもいい上にめっっっちゃ簡単なことを調べてみたので一応.
調べたこと
例えば今 n = 1 として, n に 2 をしたい時に
n += 1
とするべきか,
n = 2
とするべきか.
調べ方
変数を1増やしたい時にどっちがいいかを判定するために,
- pass(何もしない)
- 1大きい値を代入していく
- 1足していく
の3通りで10億回for文を回すのにかかる時間を調べた.
環境
プロセッサ:2.13GHz Intel Core 2 Duo
メモリ:4GB
Python:2.7.2
今回作ったコード(t.py)
# -*- encoding:utf-8 -*-
import sys
N = 100000000
def n0():
global N
n = 0
for i in xrange(N):
pass
return i
def n1():
global N
n = 0
for i in xrange(N):
n = i
return n
def n2():
global N
n = 0
for i in xrange(N):
n += 1
return n
def main():
if sys.argv[0] == 'time':
select = int(sys.argv[2])
else:
select = int(sys.argv[1])
if select == 0:
print '何もしないと',
num = n0()
elif select == 1:
print '代入していくと',
num = n1()
elif select == 2:
print '足していくと',
num = n2()
if __name__ == '__main__':
main()ちなみにこのコードだと,
1足していった時だけ結果が1大きくなるのですが,
計算する回数は同じなので問題ないです.
何もしない時
$ time python t.py 0 何もしないと real 0m3.001s user 0m2.977s sys 0m0.019s
ふむふむ.
代入していく時
$ time python t.py 1 代入していくと real 0m4.410s user 0m4.365s sys 0m0.020s
なるほど.
1足していく時
$ time python t.py 2 1足していくと real 0m7.322s user 0m7.272s sys 0m0.025s
おお!