]> granicus.if.org Git - python/commitdiff
* Moved the responsibility for emptying the previous list from list_fill
authorRaymond Hettinger <python@rcn.com>
Sun, 15 Feb 2004 04:06:39 +0000 (04:06 +0000)
committerRaymond Hettinger <python@rcn.com>
Sun, 15 Feb 2004 04:06:39 +0000 (04:06 +0000)
  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.

Misc/NEWS

index a5fd9c4bea0851856b034ac5469a1d777ae7b47d..4f16e2ed2dac17652b8a77cc99fc140414a88212 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,11 @@ What's New in Python 2.4 alpha 1?
 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
   realloc().  Significantly speeds up list appends, list pops,
   list comprehensions, and the list contructor (when the input iterable