From: Pieter Eendebak Date: Mon, 13 Oct 2025 10:28:25 +0000 (+0200) Subject: gh-140009: Improve performance of `list_extend_dictitems` by using `PyTuple_FromArray... X-Git-Tag: v3.15.0a1~26 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e6aa5152964647e548929a10d2d0fe2a7c5d875a;p=thirdparty%2FPython%2Fcpython.git gh-140009: Improve performance of `list_extend_dictitems` by using `PyTuple_FromArray` (#140010) --- diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-10-12-18-54-06.gh-issue-140009.-MbFh_.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-10-12-18-54-06.gh-issue-140009.-MbFh_.rst new file mode 100644 index 000000000000..97b35c88e17e --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-10-12-18-54-06.gh-issue-140009.-MbFh_.rst @@ -0,0 +1 @@ +Improve performance of list extension by dictionary items. diff --git a/Objects/listobject.c b/Objects/listobject.c index b2903e5c93ee..1722ea60cdc6 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -1382,9 +1382,9 @@ list_extend_dictitems(PyListObject *self, PyDictObject *dict) PyObject **dest = self->ob_item + m; Py_ssize_t pos = 0; Py_ssize_t i = 0; - PyObject *key, *value; - while (_PyDict_Next((PyObject *)dict, &pos, &key, &value, NULL)) { - PyObject *item = PyTuple_Pack(2, key, value); + PyObject *key_value[2]; + while (_PyDict_Next((PyObject *)dict, &pos, &key_value[0], &key_value[1], NULL)) { + PyObject *item = PyTuple_FromArray(key_value, 2); if (item == NULL) { Py_SET_SIZE(self, m + i); return -1;