Since the index is always non-negative, use faster unsigned division and modulo.

This commit is contained in:
Raymond Hettinger 2015-02-27 12:42:54 -08:00
parent b44ed82b81
commit da2850f932
1 changed files with 5 additions and 3 deletions

View File

@ -142,7 +142,7 @@ typedef struct {
static PyTypeObject deque_type;
/* XXX Todo:
/* XXX Todo:
If aligned memory allocations become available, make the
deque object 64 byte aligned so that all of the fields
can be retrieved or updated in a single cache line.
@ -780,7 +780,9 @@ deque_item(dequeobject *deque, Py_ssize_t i)
b = deque->rightblock;
} else {
i += deque->leftindex;
n = i / BLOCKLEN;
assert(i >= 0);
n = (Py_ssize_t)((unsigned) i / BLOCKLEN);
i = (Py_ssize_t)((unsigned) i % BLOCKLEN);
i %= BLOCKLEN;
if (index < (Py_SIZE(deque) >> 1)) {
b = deque->leftblock;
@ -1848,7 +1850,7 @@ _count_elements(PyObject *self, PyObject *args)
(hash = ((PyASCIIObject *) key)->hash) == -1)
{
hash = PyObject_Hash(key);
if (hash == -1)
if (hash == -1)
goto done;
}