読者です 読者をやめる 読者になる 読者になる

集合演算の実行速度:メソッドと演算子

集合演算をメソッドでやる場合と演算子でやる場合、どちらが速いのか気になったので試してみた。

なんとなくの予想だと、対象を全て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

メソッドのほうが速かった