* Moved the responsibility for emptying the previous list from list_fill
to list_init. * Replaced the code in list_extend with the superior code from list_fill. * Eliminated list_fill. Results: * list.extend() no longer creates an intermediate tuple except to handle the special case of x.extend(x). The saves memory and time. * list.extend(x) runs about the same x is a list or tuple, a little faster when x is an iterable not defining __len__, and twice as fast when x is an iterable defining __len__. * the code is about 15 lines shorter and no longer duplicates functionality.
This commit is contained in:
parent
90a39bf12c
commit
fa7b9d8255
|
@ -12,6 +12,11 @@ What's New in Python 2.4 alpha 1?
|
||||||
Core and builtins
|
Core and builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Optimized list.extend() to save memory and no longer create
|
||||||
|
intermediate sequences. Also, extend() now pre-allocates the
|
||||||
|
needed memory whenever the length of the iterable is known in
|
||||||
|
advance -- this halves the time to extend the list.
|
||||||
|
|
||||||
- Optimized list resize operations to make fewer calls to the system
|
- Optimized list resize operations to make fewer calls to the system
|
||||||
realloc(). Significantly speeds up list appends, list pops,
|
realloc(). Significantly speeds up list appends, list pops,
|
||||||
list comprehensions, and the list contructor (when the input iterable
|
list comprehensions, and the list contructor (when the input iterable
|
||||||
|
|
Loading…
Reference in New Issue