Commit 9afe5baa authored by Robert Bradshaw's avatar Robert Bradshaw

Use memmove for list.pop(int) optimization (up to 4x speedup).

parent c9c93943
...@@ -14,13 +14,10 @@ static PyObject* __Pyx_PyObject_PopIndex(PyObject* L, Py_ssize_t ix) { ...@@ -14,13 +14,10 @@ static PyObject* __Pyx_PyObject_PopIndex(PyObject* L, Py_ssize_t ix) {
ix += size; ix += size;
} }
if (likely(0 <= ix && ix < size)) { if (likely(0 <= ix && ix < size)) {
Py_ssize_t i;
PyObject* v = PyList_GET_ITEM(L, ix); PyObject* v = PyList_GET_ITEM(L, ix);
Py_SIZE(L) -= 1; Py_SIZE(L) -= 1;
size -= 1; size -= 1;
for(i=ix; i<size; i++) { memmove(&PyList_GET_ITEM(L, ix), &PyList_GET_ITEM(L, ix+1), (size-ix)*sizeof(PyObject*));
PyList_SET_ITEM(L, i, PyList_GET_ITEM(L, i+1));
}
return v; return v;
} }
} }
......
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