Raymond Hettinger <raymond.hettin...@gmail.com> added the comment:

I don't think this should have been done.  Conceptually, there is no basis for 
presuming key-sharing for new empty dicts -- you can't know what they would 
share with.  This patch essentially undoes the entire reason for having a 
pre-allocated minsize dict.  If it were deemed to be the norm that applications 
typically had huge numbers of empty dicts that were never populated, then the 
correct solution would be a NULL pointer to the table field (as dicts do).

FWIW, the macro benchmarks aren't very informative here because they don't 
exercise much of this code.  I think there is an over-prioritization of small 
space savings at the expense of the intended use cases for dicts.  This patch 
just forces every dict that gets used to have to convert back from a 
key-sharing dict and do a memory allocation and memset(0) in the process.  The 
whole point of the minsize dict was to avoid that cost in the common case of 
small dicts (i.e. passing keyword arguments).

----------
nosy: +rhettinger, tim.peters
status: closed -> open

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue30040>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to