• Raymond Hettinger's avatar
    * Optimized list appends and pops by making fewer calls the underlying system · 4bb9540d
    Raymond Hettinger yazdı
      realloc().  This is achieved by tracking the overallocation size in a new
      field and using that information to skip calls to realloc() whenever
      possible.
    
    * Simplified and tightened the amount of overallocation.  For larger lists,
      this overallocates by 1/8th (compared to the previous scheme which ranged
      between 1/4th to 1/32nd over-allocation).  For smaller lists (n<6), the
      maximum overallocation is one byte (formerly it could be upto eight bytes).
      This saves memory in applications with large numbers of small lists.
    
    * Eliminated the NRESIZE macro in favor of a new, static list_resize function
      that encapsulates the resizing logic.  Coverting this back to macro would
      give a small (under 1%) speed-up.  This was too small to warrant the loss
      of readability, maintainability, and de-coupling.
    
    * Some functions using NRESIZE had grown unnecessarily complex in their
      efforts to bend to the macro's calling pattern.  With the new list_resize
      function in place, those other functions could be simplified.  That is
      being saved for a separate patch.
    
    * The ob_item==NULL check could be eliminated from the new list_resize
      function.  This would entail finding each piece of code that sets ob_item
      to NULL and adding a new line to invalidate the overallocation tracking
      field.  Rather than impose a new requirement on other pieces of list code,
      it was preferred to leave the NULL check in place and retain the benefits
      of decoupling, maintainability and information hiding (only PyList_New()
      and list_sort() need to know about the new field).  This approach also
      reduces the odds of breaking an extension module.
    
    (Collaborative effort by Raymond Hettinger, Hye-Shik Chang, Tim Peters,
     and Armin Rigo.)
    4bb9540d
Adı
Son kayıt (commit)
Son güncelleme
..
Python.h Loading commit data...
abstract.h Loading commit data...
bitset.h Loading commit data...
boolobject.h Loading commit data...
bufferobject.h Loading commit data...
cStringIO.h Loading commit data...
cellobject.h Loading commit data...
ceval.h Loading commit data...
classobject.h Loading commit data...
cobject.h Loading commit data...
codecs.h Loading commit data...
compile.h Loading commit data...
complexobject.h Loading commit data...
datetime.h Loading commit data...
descrobject.h Loading commit data...
dictobject.h Loading commit data...
enumobject.h Loading commit data...
errcode.h Loading commit data...
eval.h Loading commit data...
fileobject.h Loading commit data...
floatobject.h Loading commit data...
frameobject.h Loading commit data...
funcobject.h Loading commit data...
graminit.h Loading commit data...
grammar.h Loading commit data...
import.h Loading commit data...
intobject.h Loading commit data...
intrcheck.h Loading commit data...
iterobject.h Loading commit data...
listobject.h Loading commit data...
longintrepr.h Loading commit data...
longobject.h Loading commit data...
marshal.h Loading commit data...
metagrammar.h Loading commit data...
methodobject.h Loading commit data...
modsupport.h Loading commit data...
moduleobject.h Loading commit data...
node.h Loading commit data...
object.h Loading commit data...
objimpl.h Loading commit data...
opcode.h Loading commit data...
osdefs.h Loading commit data...
parsetok.h Loading commit data...
patchlevel.h Loading commit data...
pgen.h Loading commit data...
pgenheaders.h Loading commit data...
py_curses.h Loading commit data...
pydebug.h Loading commit data...
pyerrors.h Loading commit data...
pyfpe.h Loading commit data...
pygetopt.h Loading commit data...
pymactoolbox.h Loading commit data...
pymem.h Loading commit data...
pyport.h Loading commit data...
pystate.h Loading commit data...
pythonrun.h Loading commit data...
pythread.h Loading commit data...
rangeobject.h Loading commit data...
setobject.h Loading commit data...
sliceobject.h Loading commit data...
stringobject.h Loading commit data...
structmember.h Loading commit data...
structseq.h Loading commit data...
symtable.h Loading commit data...
sysmodule.h Loading commit data...
token.h Loading commit data...
traceback.h Loading commit data...
tupleobject.h Loading commit data...
ucnhash.h Loading commit data...
unicodeobject.h Loading commit data...
weakrefobject.h Loading commit data...