Commit c8d2290c authored by Raymond Hettinger's avatar Raymond Hettinger

SF patch #729395: Dictionary tuning

Adjust resize argument for dict.update() and dict.copy().
Extends the previous change to dict.__setitem__().
parent 9f5178ab
...@@ -1151,7 +1151,7 @@ PyDict_Merge(PyObject *a, PyObject *b, int override) ...@@ -1151,7 +1151,7 @@ PyDict_Merge(PyObject *a, PyObject *b, int override)
* that there will be no (or few) overlapping keys. * that there will be no (or few) overlapping keys.
*/ */
if ((mp->ma_fill + other->ma_used)*3 >= (mp->ma_mask+1)*2) { if ((mp->ma_fill + other->ma_used)*3 >= (mp->ma_mask+1)*2) {
if (dictresize(mp, (mp->ma_used + other->ma_used)*3/2) != 0) if (dictresize(mp, (mp->ma_used + other->ma_used)*2) != 0)
return -1; return -1;
} }
for (i = 0; i <= other->ma_mask; i++) { for (i = 0; i <= other->ma_mask; i++) {
...@@ -1236,7 +1236,7 @@ PyDict_Copy(PyObject *o) ...@@ -1236,7 +1236,7 @@ PyDict_Copy(PyObject *o)
if (copy == NULL) if (copy == NULL)
return NULL; return NULL;
if (mp->ma_used > 0) { if (mp->ma_used > 0) {
if (dictresize(copy, mp->ma_used*3/2) != 0) if (dictresize(copy, mp->ma_used*2) != 0)
return NULL; return NULL;
for (i = 0; i <= mp->ma_mask; i++) { for (i = 0; i <= mp->ma_mask; i++) {
entry = &mp->ma_table[i]; entry = &mp->ma_table[i];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment