ベンチマークのソースコードです。
for文で直接回すパターンと、[i]経由でアクセスするパターンについてそれぞれ計測します。
from benchmarker import Benchmarker
with Benchmarker(10000000, width=20, cycle=3, extra=1) as bench:
@bench("tuple for")
def _(bm):
t = (1, 2, 3)
for _ in bm:
for i in t:
pass
@bench("list for")
def _(bm):
l = [1, 2, 3]
for _ in bm:
for i in l:
pass
@bench("tuple [i]")
def _(bm):
t = (1, 2, 3)
for _ in bm:
for i in range(len(t)):
t[i]
@bench("list [i]")
def _(bm):
l = [1, 2, 3]
for _ in bm:
for i in range(len(l)):
l[i]
計測結果です。
## benchmarker: release 4.0.1 (for python) ## python version: 3.4.0 ## python compiler: MSC v.1600 32 bit (Intel) ## python platform: Windows-8-6.2.9200 ... ## Ranking real list for 5.4142 ( 29.0) ****** tuple for 5.5591 ( 28.2) ****** list [i] 25.0635 ( 6.3) * tuple [i] 25.2364 ( 6.2) *
計測結果では list へのアクセスの方が高速となりました。
しかし、その差は僅かであり、実際 tuple の方が高速な回もありました。なので、アクセス速度に関しては tuple と list で同等と見なす方が良さそうです(最低限、アクセス速度を意識して tuple を一旦 list に変換する、というような処理は行うべきではありません)。
0 件のコメント:
コメントを投稿