[Python-Dev] [Python-checkins] python/dist/src/Objects setobject.c, 1.45, 1.46
jimjjewett at gmail.com
Thu Aug 11 23:21:19 CEST 2005
(1) Is there a reason that you never shrink sets for discard/remove/pop?
(set difference will do a one-time shrink, if there are enough dummy
entries, but even then, it doesn't look at the %filled, so a
merge-related overallocation will stick around)
I note the you do the same with dicts, but I think sets are a more
natural candidate for "this is the set of things I still have to
process, in any order". (I suppose enforcing an order with deque may
be faster -- unless I'm worried about duplicates.)
(2) When adding an element, you check that
if (!(so->used > n_used && so->fill*3 >= (so->mask+1)*2))
Is there any reason to use that +1? Without it, resizes will happen
element sooner, but probably not much more often -- and you could
avoid an add on every insert.
(I suppose dictionaries have the same question.)
(3) In set_merge, when finding the new size, you use (so->fill + other->used)
Why so->fill? If it is different from so->used, then the extras are
dummy entries that it would be good to replace.
(I note that dictobject does use ->used.)
More information about the Python-Dev