set型とlist型のイテレーションによるスピードの違いを調べてみた.
setiter = set(range(100000000)) listiter = list(setiter) test = "" import time #set型のかかった時間 start = time.clock() for a in setiter: test = a print time.clock() - start #list型のかかった時間 start = time.clock() for a in listiter: test = a print time.clock() - start
コードはこんな感じ.数字が順番にならないように先にset型を作ってからlist型を作った.
単純に挿入によるイテレーションだが,結果は
time python iteration_speed.py 7.91 7.47 python itereation_speed.py 26.53s user 4.62s system 97% cpu 31.793 total
と,set型の方が遅い.
単純なイテレーションにはlist型を使いましょう.
参考:
@sleepy_yoshi @issei_sato mapは実装が木なので結構な割合でボトルネックになるよ。キャッシュメモリ効率考えてもvectorは速い
— Yuya Unnoさん (@unnonouno) 11月 10, 2012