LoginSignup
6
5

More than 5 years have passed since last update.

python in リスト の参照とin リストから作った辞書内包の参照との速度を比較してみた。

Last updated at Posted at 2015-03-04

はじめに

前回、要素 in リストの参照が辞書、セット型と比べ、実験にて非常に遅いことを確認した。
http://qiita.com/cof/items/05f6ffc6d4e5b062aaa9
しかるに、辞書内包表記は結構速いはずである。
もしや、参照前に毎回辞書内包を作ったら爆速なんじゃないだろうかと思ったので、調べてみた。

実行環境

python2.7
windows7
Intel Core i5 CPU 2.4GHz
メモリ 4.0 GB

実行条件

以下の二つのコードの10000要素参照、10回実行時の時間を計測することで調べてみた。要素数10000
要素 in リスト
要素 in {要素:True for 要素 in リスト}

結果(10回実行時の合計時間)

要素 in リスト 10.226
要素 in {要素:True for 要素 in リスト} 124.887

結論

辞書内包を毎回つくるのが速いわけがなかった。

実験コードたち

def in_list(n):
  ls = [i for i in range(n)]
  for i in range(n): i in ls

def in_dict(n):
  ls = [i for i in range(n)]
  for i in range(n): i in {i:True for i in ls}

def exe(func,num=100):
  from timeit import timeit
  setup = 'from __main__ import ' + func.split('(')[0]
  print "%s: %s" % (func, timeit(func, setup, number=num))
if __name__=='__main__':
  q = 10**4
  exe('in_list(%d)'%q,10)
  exe('in_dict(%d)'%q,10)
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5