mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
SF bug 433228: repr(list) woes when len(list) big.
Gave Python linear-time repr() implementations for dicts, lists, strings. This means, e.g., that repr(range(50000)) is no longer 50x slower than pprint.pprint() in 2.2 <wink>. I don't consider this a bugfix candidate, as it's a performance boost. Added _PyString_Join() to the internal string API. If we want that in the public API, fine, but then it requires runtime error checks instead of asserts.
This commit is contained in:
parent
239508cd10
commit
a7259597f1
5 changed files with 193 additions and 56 deletions
|
@ -1031,6 +1031,23 @@ string_join(PyStringObject *self, PyObject *args)
|
|||
return res;
|
||||
}
|
||||
|
||||
PyObject *_PyString_Join(PyObject *sep, PyObject *x)
|
||||
{
|
||||
PyObject* args;
|
||||
PyObject* result = NULL;
|
||||
|
||||
assert(sep != NULL && PyString_Check(sep));
|
||||
assert(x != NULL);
|
||||
args = PyTuple_New(1);
|
||||
if (args != NULL) {
|
||||
Py_INCREF(x);
|
||||
PyTuple_SET_ITEM(args, 0, x);
|
||||
result = string_join((PyStringObject *)sep, args);
|
||||
Py_DECREF(args);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static long
|
||||
string_find_internal(PyStringObject *self, PyObject *args, int dir)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue