Python

Array の append/pop/insert(0,x)/pop(0) に要する時間(python)

Array の push/pop/unshift/shift に要する時間(ruby) という記事を書いたので、同じことを python でも試してみた。

まずはソースコード

こんな感じの

python3.6
import time

def tick(t):
  start = time.time()
  t()
  return (time.time() - start)*1000

r=[0,0,0]
for x in range(10):
  a=[0]*100_000_000
  for ix in range(3):
    r[ix] += tick( lambda:a.append(0) ) # この行の append(0) を「insert(0,0)」「pop()」「pop(0)」に変更する

print( "".join( [ "%.5f|" % (r[ix]/10) for ix in range(3) ] ) )

ソースコードで測ってみた。

測定結果

結果は下表の通り:

1回目 2回目 3回目
append 0.01278 0.00091 0.00041
insert(0,0) 102.11890 104.82631 105.90937
pop 0.00412 0.00043 0.00041
pop(0) 94.54970 96.57269 97.45097

append は初回がちょっと遅いけど、基本的に速い。
insert(0,0) は、遅い。2回目も3回目も同じように遅い。
pop も初回がちょっと遅いけど、基本的に速い。
pop(0) は、遅い。2回目も3回目も同じように遅い。

というわけで、ruby とは異なり、分かり易い結果になった。