ベンチマークのソースコードです。
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 件のコメント:
コメントを投稿