lkml.org 
[lkml]   [2012]   [Aug]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v2 6/9] rbtree: low level optimizations in rb_erase()
On 08/02/2012 06:34 PM, Michel Lespinasse wrote:
> Various minor optimizations in rb_erase():
> - Avoid multiple loading of node->__rb_parent_color when computing parent
> and color information (possibly not in close sequence, as there might
> be further branches in the algorithm)
> - In the 1-child subcase of case 1, copy the __rb_parent_color field from
> the erased node to the child instead of recomputing it from the desired
> parent and color
> - When searching for the erased node's successor, differentiate between
> cases 2 and 3 based on whether any left links were followed. This avoids
> a condition later down.
> - In case 3, keep a pointer to the erased node's right child so we don't
> have to refetch it later to adjust its parent.
> - In the no-childs subcase of cases 2 and 3, place the rebalance assigment
> last so that the compiler can remove the following if(rebalance) test.
>
> Also, added some comments to illustrate cases 2 and 3.
>
> Signed-off-by: Michel Lespinasse<walken@google.com>

Acked-by: Rik van Riel <riel@redhat.com>


--
All rights reversed


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