リストを作成する操作として、以下の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 件のコメント:
コメントを投稿