Skip to content

Commit b124698

Browse files
committed
Overallocate by 50%
1 parent 05758b7 commit b124698

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

Objects/tupleobject.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,20 +1240,18 @@ tuplewriter_free(PyTupleWriter *writer)
12401240

12411241

12421242
static int
1243-
_PyTupleWriter_SetSize(PyTupleWriter *writer, size_t size, int resize)
1243+
_PyTupleWriter_SetSize(PyTupleWriter *writer, size_t size)
12441244
{
12451245
assert(size >= 1);
12461246

1247+
size += (size >> 1); // Over-allocate by 50%
1248+
12471249
if (size > (size_t)PY_SSIZE_T_MAX) {
12481250
/* Check for overflow */
12491251
PyErr_NoMemory();
12501252
return -1;
12511253
}
12521254

1253-
if (resize) {
1254-
size += (size >> 2); // Over-allocate by 25%
1255-
}
1256-
12571255
if (writer->tuple != NULL) {
12581256
if (_PyTuple_ResizeNoTrack(&writer->tuple, (Py_ssize_t)size) < 0) {
12591257
return -1;
@@ -1265,7 +1263,7 @@ _PyTupleWriter_SetSize(PyTupleWriter *writer, size_t size, int resize)
12651263
return -1;
12661264
}
12671265

1268-
if (resize && writer->size > 0) {
1266+
if (writer->size > 0) {
12691267
memcpy(_PyTuple_ITEMS(writer->tuple),
12701268
writer->small_tuple,
12711269
writer->size * sizeof(writer->small_tuple[0]));
@@ -1327,7 +1325,7 @@ PyTupleWriter_Add(PyTupleWriter *writer, PyObject *item)
13271325
}
13281326

13291327
if (writer->size >= writer->allocated) {
1330-
if (_PyTupleWriter_SetSize(writer, writer->size + 1, 1) < 0) {
1328+
if (_PyTupleWriter_SetSize(writer, writer->size + 1) < 0) {
13311329
return -1;
13321330
}
13331331
}
@@ -1349,7 +1347,7 @@ PyTupleWriter_AddSteal(PyTupleWriter *writer, PyObject *item)
13491347
}
13501348

13511349
if (writer->size >= writer->allocated) {
1352-
if (_PyTupleWriter_SetSize(writer, writer->size + 1, 1) < 0) {
1350+
if (_PyTupleWriter_SetSize(writer, writer->size + 1) < 0) {
13531351
Py_DECREF(item);
13541352
return -1;
13551353
}
@@ -1372,7 +1370,7 @@ PyTupleWriter_AddArray(PyTupleWriter *writer,
13721370

13731371
if ((writer->size + (size_t)size) > writer->allocated) {
13741372
if (_PyTupleWriter_SetSize(writer,
1375-
writer->size + (size_t)size, 1) < 0) {
1373+
writer->size + (size_t)size) < 0) {
13761374
return -1;
13771375
}
13781376
}

0 commit comments

Comments
 (0)