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

Python2.5のsetオブジェクト

Python

Python2.5での変更点の中に、setオブジェクトのCでの実装コードが書き直されたという点があります。Python2.5のsetオブジェクトは2.4に比べると、メモリの消費量が少なく、より高速であるという利点があります。Python/C APIにsetを扱うAPIが公開されたのも、うれしい変更点です。
バージョン間で、どれくらい速度が異なるかをtimeitを使って計測してみました。なお、Python2.3ではsetsモジュールのImmutableSetを使用しています。

x in s

python2.5 0.940785169601
python2.4 1.16698598862
python2.3 4.67283701897

a | b

python2.5 2.66652393341
python2.4 3.69761800766
python2.3 25.8049330711

a & b

python2.5 1.82336187363
python2.4 2.37803506851
python2.3 36.738296032


上の数値は何度か測定した結果の一例ですが、Python2.5のほうが常によい数値を出しました。Python2.3のsetsモジュールとこれほど差が出るとは思わなかったので、参考になりました。