1. 13 Feb, 2004 3 commits
    • Raymond Hettinger's avatar
      Optimize list.pop() for the common special case of popping off the end. · cb3e580e
      Raymond Hettinger authored
      More than doubles its speed.
      cb3e580e
    • Raymond Hettinger's avatar
      * Optimized list appends and pops by making fewer calls the underlying system · 4bb9540d
      Raymond Hettinger authored
        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
    • Hye-Shik Chang's avatar
      We have cp932 support in standard distribution now. And there's now · 4a8d42f7
      Hye-Shik Chang authored
      no major codepages unsupported by Python, so remove the eg. case.
      4a8d42f7
  2. 12 Feb, 2004 6 commits
  3. 10 Feb, 2004 7 commits
  4. 09 Feb, 2004 4 commits
  5. 08 Feb, 2004 12 commits
  6. 07 Feb, 2004 8 commits