mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Hoist the deque->maxlen lookup out of the inner-loop.
This commit is contained in:
parent
20d15b5100
commit
6b1e113f9f
1 changed files with 10 additions and 6 deletions
|
@ -385,7 +385,7 @@ deque_extend(dequeobject *deque, PyObject *iterable)
|
|||
{
|
||||
PyObject *it, *item;
|
||||
PyObject *(*iternext)(PyObject *);
|
||||
int trim = (deque->maxlen >= 0);
|
||||
Py_ssize_t maxlen = deque->maxlen;
|
||||
|
||||
/* Handle case where id(deque) == id(iterable) */
|
||||
if ((PyObject *)deque == iterable) {
|
||||
|
@ -433,8 +433,10 @@ deque_extend(dequeobject *deque, PyObject *iterable)
|
|||
Py_SIZE(deque)++;
|
||||
deque->rightindex++;
|
||||
deque->rightblock->data[deque->rightindex] = item;
|
||||
if (trim)
|
||||
deque_trim_left(deque);
|
||||
if (maxlen >= 0 && Py_SIZE(deque) > maxlen) {
|
||||
PyObject *rv = deque_popleft(deque, NULL);
|
||||
Py_DECREF(rv);
|
||||
}
|
||||
}
|
||||
return finalize_iterator(it);
|
||||
}
|
||||
|
@ -447,7 +449,7 @@ deque_extendleft(dequeobject *deque, PyObject *iterable)
|
|||
{
|
||||
PyObject *it, *item;
|
||||
PyObject *(*iternext)(PyObject *);
|
||||
int trim = (deque->maxlen >= 0);
|
||||
Py_ssize_t maxlen = deque->maxlen;
|
||||
|
||||
/* Handle case where id(deque) == id(iterable) */
|
||||
if ((PyObject *)deque == iterable) {
|
||||
|
@ -495,8 +497,10 @@ deque_extendleft(dequeobject *deque, PyObject *iterable)
|
|||
Py_SIZE(deque)++;
|
||||
deque->leftindex--;
|
||||
deque->leftblock->data[deque->leftindex] = item;
|
||||
if (trim)
|
||||
deque_trim_right(deque);
|
||||
if (maxlen >= 0 && Py_SIZE(deque) > maxlen) {
|
||||
PyObject *rv = deque_pop(deque, NULL);
|
||||
Py_DECREF(rv);
|
||||
}
|
||||
}
|
||||
return finalize_iterator(it);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue