lkml.org 
[lkml]   [2012]   [Jul]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH 5/6] rbtree: faster augmented erase
    From
    On Fri, Jul 27, 2012 at 5:44 PM, Michel Lespinasse <walken@google.com> wrote:
    > On Fri, Jul 27, 2012 at 1:02 PM, Peter Zijlstra <peterz@infradead.org> wrote:
    >> As it stands rb_erase() isn't inlined and its rather big,
    >> why would you want to inline it for augmented callers?
    >
    > Just as the non-augmented rb_erase() is generated (as a non-inline
    > function) by merging together the rb_erase_augmented() inline function
    > and its dummy callbacks, I want each library that uses augmented
    > rbtrees to generate their own rb_erase() equivalent using their own
    > callbacks. The inline function in rbtree_internal.h is only to be used
    > as a template for generating one non-inline instance for each data
    > structure that uses augmented rbtrees.

    One more thing while we're talking about compiled code size. As you
    noted, the non-augmented rb_erase() is pretty big. However, that size
    includes the inlined rebalancing code. For the augmented erase
    functions, my proposal is to the rebalancing part (rb_erase_color with
    the rotate callback) will not be inlined, so as to limit the size of
    the erase functions for each augmented rbtree data structure.

    --
    Michel "Walken" Lespinasse
    A program is never fully debugged until the last user dies.


    \
     
     \ /
      Last update: 2012-07-28 05:01    [W:2.083 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site