372d705d95
The list() constructor isn't taking full advantage of known input lengths or length hints. This commit makes the constructor pre-size and not over-allocate when the input size is known (the input collection implements __len__). One on the main advantages is that this provides 12% difference in memory savings due to the difference between overallocating and allocating exactly the input size. For efficiency purposes and to avoid a performance regression for small generators and collections, the size of the input object is calculated using __len__ and not __length_hint__, as the later is considerably slower. |
||
---|---|---|
.. | ||
clinic | ||
stringlib | ||
README | ||
abstract.c | ||
accu.c | ||
boolobject.c | ||
bytearrayobject.c | ||
bytes_methods.c | ||
bytesobject.c | ||
call.c | ||
capsule.c | ||
cellobject.c | ||
classobject.c | ||
codeobject.c | ||
complexobject.c | ||
descrobject.c | ||
dict-common.h | ||
dictnotes.txt | ||
dictobject.c | ||
enumobject.c | ||
exceptions.c | ||
fileobject.c | ||
floatobject.c | ||
frameobject.c | ||
funcobject.c | ||
genobject.c | ||
iterobject.c | ||
listobject.c | ||
listsort.txt | ||
lnotab_notes.txt | ||
longobject.c | ||
memoryobject.c | ||
methodobject.c | ||
moduleobject.c | ||
namespaceobject.c | ||
object.c | ||
obmalloc.c | ||
odictobject.c | ||
rangeobject.c | ||
setobject.c | ||
sliceobject.c | ||
structseq.c | ||
tupleobject.c | ||
typeobject.c | ||
typeslots.inc | ||
typeslots.py | ||
unicodectype.c | ||
unicodeobject.c | ||
unicodetype_db.h | ||
weakrefobject.c |
README
Source files for various builtin objects