Abstract
We present the CB tree, a counting-based self-adjusting binary search tree in which, as in splay trees, more-frequently accessed items move closer to the root. In a sequential execution, after $$m$$m operations of which $$c(v)$$c(v) access item $$v$$v, an access of $$v$$v traverses a path of length $$\mathcal {O}\left( 1 + \log \frac{m}{c(v)}\right) $$O1+logmc(v) while doing few if any rotations. Unlike the original splay tree, in which each access moves the accessed item all the way to the root via a sequence of rotations, accesses in a CB tree do very few rotations, specifically $$\mathcal {O}\left( n + n\log \frac{m}{n}\right) $$On+nlogmn, during a sequence of $$m$$m operations of which $$n$$n are insertions. This is $$o(1)$$o(1) (subconstant) amortized per operation if $$m \gg n$$m?n. We adapt the CB tree into a scalable concurrent self-adjusting BST. We show experimentally that the concurrent CB tree scales well because it, too, performs few rotations, and therefore self-adjusts without having rotations create a bottleneck. Our evaluation shows that the concurrent CB tree performs better than existing concurrent search trees on non-uniform access sequences derived from real workloads.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.