On 17 February 2012 at 17:42 Jim Jewett <jimjjew...@gmail.com> wrote:
> On Fri, Feb 17, 2012 at 1:50 AM, "Martin v. Löwis" <mar...@v.loewis.de> wrote: > >>> Good idea. However, how do you track per-dict how large the > >>> table is? > > [Or, rather, what is the highest index needed to store any values > that are actually set for this instance.] > > > To determine whether it needs to grow the array, it needs to find out > > how large the array is, no? So: how do you do that? > > Ah, now I understand; you do need a single ssize_t either on the dict > or at the head of the values array to indicate how many slots it has > actually allocated. It *may* also be worthwhile to add a second > ssize_t to indicate how many are currently in use, for faster results > in case of len. But the dict is guaranteed to have at least one free > slot, so that extra index will never make the allocation larger than > the current code. The dict already has a field indicating how many items are in use, the ma_used field. Cheers, Mark. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com