mirror of
https://github.com/python/cpython.git
synced 2024-11-28 20:33:54 +08:00
SF patch #729395: Dictionary tuning
Adjust resize argument for dict.update() and dict.copy(). Extends the previous change to dict.__setitem__().
This commit is contained in:
parent
9f5178abb7
commit
c8d2290c8c
@ -1151,7 +1151,7 @@ PyDict_Merge(PyObject *a, PyObject *b, int override)
|
||||
* 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 @@ PyDict_Copy(PyObject *o)
|
||||
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];
|
||||
|
Loading…
Reference in New Issue
Block a user