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) ...@@ -326,18 +326,26 @@ deque_item(dequeobject *deque, int i)
return NULL; return NULL;
} }
i += deque->leftindex; if (i == 0) {
n = i / BLOCKLEN; i = deque->leftindex;
i %= BLOCKLEN;
if (i < (deque->len >> 1)) {
b = deque->leftblock; b = deque->leftblock;
while (n--) } else if (i == deque->len - 1) {
b = b->rightlink; i = deque->rightindex;
} else {
n = (deque->leftindex + deque->len - 1) / BLOCKLEN - n;
b = deque->rightblock; b = deque->rightblock;
while (n--) } else {
b = b->leftlink; 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]; item = b->data[i];
Py_INCREF(item); 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