集合演算の実行速度:メソッドと演算子
集合演算をメソッドでやる場合と演算子でやる場合、どちらが速いのか気になったので試してみた。
なんとなくの予想だと、対象を全てset型に揃えないといけない演算子による計算よりも、メソッドの引数がイテラブルであればなんでもよいメソッド演算のほうが速いのかなー?
import timeit setup = """ from random import choice from string import ( ascii_letters, uppercase, lowercase, ) hoge = [choice(ascii_letters) for i in xrange(30)] fuga = [choice(uppercase) for i in xrange(30)] piyo = [choice(lowercase) for i in xrange(30)] """ oper = "set(hoge) - set(fuga) - set(piyo)" meth = "set(hoge).difference(fuga, piyo)" ot = timeit.Timer(oper, setup) mt = timeit.Timer(meth, setup) print "Operator: {0}\nMethod: {1}".format(ot.timeit(), mt.timeit())
結果
Operator: 9.30117201805 Method: 6.49405097961
メソッドのほうが速かった