リストを作成する操作として、以下の3つを比較します。1番目は標準的な方法、2番目はよく知られた高速化手法、3番めは可読性を重視した手法、となります。
- list.append() を呼ぶ
- list.append へのショートカットを利用
- list += [i] と呼ぶ
ベンチマークのソースコードです。
from benchmarker import Benchmarker
with Benchmarker(1000, cycle=3, extra=1) as bench:
sample = range(10000)
@bench("append")
def _(bm):
for _ in bm:
l = list()
for i in sample:
l.append(i)
@bench("shortcut append")
def _(bm):
for _ in bm:
l = list()
append = l.append
for i in sample:
append(i)
@bench("+= []")
def _(bm):
for _ in bm:
l = list()
for i in sample:
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 shortcut append 3.5932 (100.0) ******************** append 5.7150 ( 62.9) ************* += [] 8.6328 ( 41.6) ********
計測結果から、以下のことが言えます。
- append のショートカット化はかなり有効
- list += [i] は遅い
list += [i] は、視覚的に分かりやすく個人的には嫌いではないのですが、動作速度の点からはイマイチのようです。
0 件のコメント:
コメントを投稿