2015年11月18日

ベンチマーク6 リスト内包表記

リストを作成する操作について、ベンチマークを計測します。


リストを作成する操作として、以下の2つを比較します。1番目は空のリストを作ってから append していく方法、2番目はリスト内包表記、となります。

  1. list.append へのショートカットを利用
  2. リスト内包表記

ベンチマークのソースコードです。
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()
            append = l.append
            for i in sample:
                append(i)

    @bench("comprehensions")
    def _(bm):
        for _ in bm:
            l = [i for i in sample]
計測結果です。
## 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
comprehensions          2.5492  (100.0) ********************
append                  3.2118  ( 79.4) ****************

計測結果より、リスト内包表記の方が高速であると言えます。
「list.append へのショートカットを利用」はこちらでは最速の手法でしたが、リスト内包表記はそれよりも高速でした。

さらに、リスト内包表記は記述が1行で済んでおり、高速さと簡潔さを兼ね備えた実装方法であると言えます。内包表記を使える場面では迷わず使っていきましょう。

0 件のコメント:

コメントを投稿