2009/4/16 Francesco Cosoleto cosoleto@free.fr
Nicolas Dumazet ha scritto:
A small note here: set is not really meant to be used on incremental .add(), because sets are frozen (not mutable), and add() instantiates a new set on each .add() action. Sets are useful for set operations (union, intersection), but are not really helpful when it comes to incrementally construct them. When I need performance for such kind of lookups, a simple dictionary is usually way faster than sets :) I would suggest using a dictionary here :)
'set' is implemented as a 'dict', using add() method you just are adding a new keyword, so using directly a 'dict' should be theorically faster. Unfortunately, I cannot see this in a test I have executed (1,23% slower). I'll try to run it again later. Maybe I miss something.
Yes, after Russell's message, I double-checked set.add vs dict.__setitem__ performance, and to my surprise, the runtime differences where not as significant as I first thought. One important parameter however, seems to be the length of the keys.
I am currently running more systematic tests, I will let you know the results =)