Speed-up argument parsing for common cases in deque.__init__()(GH-11717)

https://github.com/python/cpython/commit/05f1b93f5876ac970485ae008dd9ab3e840... commit: 05f1b93f5876ac970485ae008dd9ab3e8404f934 branch: master author: Raymond Hettinger <rhettinger@users.noreply.github.com> committer: GitHub <noreply@github.com> date: 2019-01-31T22:13:43-08:00 summary: Speed-up argument parsing for common cases in deque.__init__()(GH-11717) files: M Modules/_collectionsmodule.c diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index a2b683e16663..280b15d73b1f 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -1463,9 +1463,13 @@ deque_init(dequeobject *deque, PyObject *args, PyObject *kwdargs) Py_ssize_t maxlen = -1; char *kwlist[] = {"iterable", "maxlen", 0}; - if (kwdargs == NULL) { - if (!PyArg_UnpackTuple(args, "deque()", 0, 2, &iterable, &maxlenobj)) - return -1; + if (kwdargs == NULL && PyTuple_GET_SIZE(args) <= 2) { + if (PyTuple_GET_SIZE(args) > 0) { + iterable = PyTuple_GET_ITEM(args, 0); + } + if (PyTuple_GET_SIZE(args) > 1) { + maxlenobj = PyTuple_GET_ITEM(args, 1); + } } else { if (!PyArg_ParseTupleAndKeywords(args, kwdargs, "|OO:deque", kwlist, &iterable, &maxlenobj))
participants (1)
-
Raymond Hettinger