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 とは異なり、分かり易い結果になった。