Added description of why splitlines doesn't use the prealloc strategy

This commit is contained in:
Andrew Dalke 2006-05-26 22:49:03 +00:00
parent 57ad060722
commit 7e0a62ea90
1 changed files with 8 additions and 0 deletions

View File

@ -3768,6 +3768,14 @@ string_splitlines(PyStringObject *self, PyObject *args)
data = PyString_AS_STRING(self); data = PyString_AS_STRING(self);
len = PyString_GET_SIZE(self); len = PyString_GET_SIZE(self);
/* This does not use the preallocated list because splitlines is
usually run with hundreds of newlines. The overhead of
switching between PyList_SET_ITEM and append causes about a
2-3% slowdown for that common case. A smarter implementation
could move the if check out, so the SET_ITEMs are done first
and the appends only done when the prealloc buffer is full.
That's too much work for little gain.*/
list = PyList_New(0); list = PyList_New(0);
if (!list) if (!list)
goto onError; goto onError;