SF patch #729395: Dictionary tuning
Adjust resize argument for dict.update() and dict.copy().
Extends the previous change to dict.__setitem__().
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index f3adc0b..c4959ff 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -1151,7 +1151,7 @@
* that there will be no (or few) overlapping keys.
*/
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;
}
for (i = 0; i <= other->ma_mask; i++) {
@@ -1236,7 +1236,7 @@
if (copy == NULL)
return NULL;
if (mp->ma_used > 0) {
- if (dictresize(copy, mp->ma_used*3/2) != 0)
+ if (dictresize(copy, mp->ma_used*2) != 0)
return NULL;
for (i = 0; i <= mp->ma_mask; i++) {
entry = &mp->ma_table[i];