]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-140009: Improve performance of `list_extend_dictitems` by using `PyTuple_FromArray...
authorPieter Eendebak <pieter.eendebak@gmail.com>
Mon, 13 Oct 2025 10:28:25 +0000 (12:28 +0200)
committerGitHub <noreply@github.com>
Mon, 13 Oct 2025 10:28:25 +0000 (15:58 +0530)
Misc/NEWS.d/next/Core_and_Builtins/2025-10-12-18-54-06.gh-issue-140009.-MbFh_.rst [new file with mode: 0644]
Objects/listobject.c

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 (file)
index 0000000..97b35c8
--- /dev/null
@@ -0,0 +1 @@
+Improve performance of list extension by dictionary items.
index b2903e5c93ee9fffed3bef022be2d242f04de50d..1722ea60cdc68fbb21946b32f32c285edfca261e 100644 (file)
@@ -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;