From d8fae4e6ad466922422eaa1ff2ac4bc21e1e13d6 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sun, 5 Dec 2010 05:39:54 +0000 Subject: [PATCH] Optimization notes. --- Doc/whatsnew/3.2.rst | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/Doc/whatsnew/3.2.rst b/Doc/whatsnew/3.2.rst index dac2becb31e..284c04c5ec9 100644 --- a/Doc/whatsnew/3.2.rst +++ b/Doc/whatsnew/3.2.rst @@ -348,6 +348,11 @@ Some smaller changes made to the core Python language are: the context manager protocol. This allows timely release of any resources that were acquired when requesting a buffer from the original object. + >>> with memoryview(b'abcdefgh') as v: + ... print(v.tolist()) + ... + [97, 98, 99, 100, 101, 102, 103, 104] + (Added by Antoine Pitrou; :issue:`9757`.) * Mark Dickinson crafted an elegant and efficient scheme for assuring that @@ -389,13 +394,11 @@ Some smaller changes made to the core Python language are: can be enabled through the means provided by the :mod:`warnings` module, or on the command line. - :exc:`ResourceWarning` is issued at interpreter shutdown if the + A :exc:`ResourceWarning` is issued at interpreter shutdown if the :data:`gc.garbage` list isn't empty. This is meant to make the programmer aware that their code contains object finalization issues. - (Added by Antoine Pitrou and Georg Brandl; :issue:`477863`.) - - :exc:`ResourceWarning` is also issued when a :term:`file object` is destroyed + A :exc:`ResourceWarning` is also issued when a :term:`file object` is destroyed without having been explicitly closed. While the deallocator for such object ensures it closes the underlying operating system resource (usually, a file descriptor), the delay in deallocating the object could @@ -411,7 +414,7 @@ Some smaller changes made to the core Python language are: __main__:1: ResourceWarning: unclosed file <_io.BufferedWriter name='foo'> >>> - (Added by Antoine Pitrou, :issue:`10093`.) + (Added by Antoine Pitrou and Georg Brandl in :issue:`10093` and :issue:`477863`.) * :class:`range` objects now support and *index* and *count* methods. This is part of an effort to make more objects fully implement the :class:`collections.Sequence` @@ -424,6 +427,11 @@ Some smaller changes made to the core Python language are: (Contributed by Daniel Stuzback in :issue:`9213` and by Alexander Belopolsky in :issue:`2690`.) +* The :func:`callable` builtin function from Py2.x was resurrected. It provides + a concise, readable alternative to using an :term:`abstract base class` to in + an expression like ``isinstance(x, collections.Callable)``. + + (See :issue:`10518`.) New, Improved, and Deprecated Modules ===================================== @@ -802,6 +810,15 @@ A number of small performance enhancements have been added: (Patch by Florent Xicluna in :issue:`7622` and :issue:`7462`.) +There were several other minor optimizations. Set differencing now runs faster +when one operand is much larger than the other (Patch by Andress Bennetts in +:issue:`8685`). The :meth:`array.repeat` method has a faster implementation +(:issue:`1569291` by Alexander Belopolsky). The :class:`BaseHTTPRequestHandler` +has more efficient buffering (:issue:`3709` by Andrew Schaaf). The +multi-argument form of :func:`operator.attrgetter` now function runs slightly +faster (:issue:`10160` by Christos Georgiou). And :class:`ConfigParser` loads +multi-line arguments a bit faster (:issue:`7113` by Ɓukasz Langa). + Unicode =======