namedtuple from ordereddict

Several of the replies seemed to suggest that re-using the current dict structure for a tuple wouldn't work. Since I'm not sure whether people are still thinking of the old structure, or I'm missing something obvious, I'll be more explicit. Per https://github.com/python/cpython/blob/master/Include/dictobject.h#L40 the last element of a dict object is now a separate pointer to ma_values, which is an array of objects. Per https://github.com/python/cpython/blob/master/Include/tupleobject.h#L27 the last element of a tuple object is also an array of objects. Is there some reason these arrays cannot be the same memory? e.g., does a tuple header *have* to be contiguous with its data, and if so, is there a reason that the dict's ma_array can't be allocated with an extra tuple-header prefix? -jJ

20.07.17 23:17, Jim J. Jewett пише:
Having a tuple header to be contiguous with its data decreases a total size of consumed memory, decreases memory fragmentation, speeds up tuple's creation and item access. Memory consumption and performance of tuples are critically important. Allocating the dict's ma_values with an extra tuple-header prefix will increase memory consumption for instance dictionaries and will complicate the dict implementation (this can harm the performance). This also will increase a code coupling between dicts and tuples. Named tuples are rarely used in comparision with ordinary tuples and dictionaries, and they shouldn't be improved at the cost of tuples and dicts.

20.07.17 23:17, Jim J. Jewett пише:
Having a tuple header to be contiguous with its data decreases a total size of consumed memory, decreases memory fragmentation, speeds up tuple's creation and item access. Memory consumption and performance of tuples are critically important. Allocating the dict's ma_values with an extra tuple-header prefix will increase memory consumption for instance dictionaries and will complicate the dict implementation (this can harm the performance). This also will increase a code coupling between dicts and tuples. Named tuples are rarely used in comparision with ordinary tuples and dictionaries, and they shouldn't be improved at the cost of tuples and dicts.
participants (2)
-
Jim J. Jewett
-
Serhiy Storchaka