Precomputing the number iterations allows the inner-loop to be vectorizable.

This commit is contained in:
Raymond Hettinger 2015-09-26 02:14:50 -07:00
parent 7a84552c84
commit c22eee6b59
1 changed files with 6 additions and 2 deletions

View File

@ -557,7 +557,7 @@ static void deque_clear(dequeobject *deque);
static PyObject *
deque_inplace_repeat(dequeobject *deque, Py_ssize_t n)
{
Py_ssize_t i, size;
Py_ssize_t i, m, size;
PyObject *seq;
PyObject *rv;
@ -598,7 +598,11 @@ deque_inplace_repeat(dequeobject *deque, Py_ssize_t n)
MARK_END(b->rightlink);
deque->rightindex = -1;
}
for ( ; i < n-1 && deque->rightindex != BLOCKLEN - 1 ; i++) {
m = n - 1 - i;
if (m > BLOCKLEN - 1 - deque->rightindex)
m = BLOCKLEN - 1 - deque->rightindex;
i += m;
while (m--) {
deque->rightindex++;
Py_INCREF(item);
deque->rightblock->data[deque->rightindex] = item;