@@ -236,7 +236,7 @@ set_add_entry(PySetObject *so, PyObject *key, Py_hash_t hash)
236
236
entry -> hash = hash ;
237
237
if ((size_t )so -> fill * 5 < mask * 3 )
238
238
return 0 ;
239
- return set_table_resize (so , so -> used );
239
+ return set_table_resize (so , so -> used > 50000 ? so -> used * 2 : so -> used * 4 );
240
240
241
241
found_active :
242
242
Py_DECREF (key );
@@ -302,7 +302,6 @@ set_table_resize(PySetObject *so, Py_ssize_t minused)
302
302
setentry small_copy [PySet_MINSIZE ];
303
303
304
304
assert (minused >= 0 );
305
- minused = (minused > 50000 ) ? minused * 2 : minused * 4 ;
306
305
307
306
/* Find the smallest table size > minused. */
308
307
/* XXX speed-up with intrinsics */
@@ -643,8 +642,8 @@ set_merge(PySetObject *so, PyObject *otherset)
643
642
* that there will be no (or few) overlapping keys.
644
643
*/
645
644
if ((so -> fill + other -> used )* 5 >= so -> mask * 3 ) {
646
- if (set_table_resize (so , so -> used + other -> used ) != 0 )
647
- return -1 ;
645
+ if (set_table_resize (so , ( so -> used + other -> used ) * 2 ) != 0 )
646
+ return -1 ;
648
647
}
649
648
so_entry = so -> table ;
650
649
other_entry = other -> table ;
@@ -987,7 +986,7 @@ set_update_internal(PySetObject *so, PyObject *other)
987
986
if (dictsize < 0 )
988
987
return -1 ;
989
988
if ((so -> fill + dictsize )* 5 >= so -> mask * 3 ) {
990
- if (set_table_resize (so , so -> used + dictsize ) != 0 )
989
+ if (set_table_resize (so , ( so -> used + dictsize ) * 2 ) != 0 )
991
990
return -1 ;
992
991
}
993
992
while (_PyDict_Next (other , & pos , & key , & value , & hash )) {
@@ -1507,7 +1506,7 @@ set_difference_update_internal(PySetObject *so, PyObject *other)
1507
1506
/* If more than 1/4th are dummies, then resize them away. */
1508
1507
if ((size_t )(so -> fill - so -> used ) <= (size_t )so -> mask / 4 )
1509
1508
return 0 ;
1510
- return set_table_resize (so , so -> used );
1509
+ return set_table_resize (so , so -> used > 50000 ? so -> used * 2 : so -> used * 4 );
1511
1510
}
1512
1511
1513
1512
static PyObject *
0 commit comments