Commit 6c79a518 authored by Raymond Hettinger's avatar Raymond Hettinger

Special case endpoint access for speed.

parent 30e97dbe
......@@ -326,18 +326,26 @@ deque_item(dequeobject *deque, int i)
return NULL;
}
i += deque->leftindex;
n = i / BLOCKLEN;
i %= BLOCKLEN;
if (i < (deque->len >> 1)) {
if (i == 0) {
i = deque->leftindex;
b = deque->leftblock;
while (n--)
b = b->rightlink;
} else {
n = (deque->leftindex + deque->len - 1) / BLOCKLEN - n;
} else if (i == deque->len - 1) {
i = deque->rightindex;
b = deque->rightblock;
while (n--)
b = b->leftlink;
} else {
i += deque->leftindex;
n = i / BLOCKLEN;
i %= BLOCKLEN;
if (i < (deque->len >> 1)) {
b = deque->leftblock;
while (n--)
b = b->rightlink;
} else {
n = (deque->leftindex + deque->len - 1) / BLOCKLEN - n;
b = deque->rightblock;
while (n--)
b = b->leftlink;
}
}
item = b->data[i];
Py_INCREF(item);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment