Cache-Friendly Search Trees; or, In Which Everything Beats std::set

07/02/2019
by   Jeffrey Barratt, et al.
0

While a lot of work in theoretical computer science has gone into optimizing the runtime and space usage of data structures, such work very often neglects a very important component of modern computers: the cache. In doing so, very often, data structures are developed that achieve theoretically-good runtimes but are slow in practice due to a large number of cache misses. In 1999, Frigo et al. introduced the notion of a cache-oblivious algorithm: an algorithm that uses the cache to its advantage, regardless of the size or structure of said cache. Since then, various authors have designed cache-oblivious algorithms and data structures for problems from matrix multiplication to array sorting. We focus in this work on cache-oblivious search trees; i.e. implementing an ordered dictionary in a cache-friendly manner. We will start by presenting an overview of cache-oblivious data structures, especially cache-oblivious search trees. We then give practical results using these cache-oblivious structures on modern-day machinery, comparing them to the standard std::set and other cache-friendly dictionaries such as B-trees.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/20/2021

Fast Bitmap Fit: A CPU Cache Line friendly memory allocator for single object allocations

Applications making excessive use of single-object based data structures...
research
06/01/2021

Boosting the Search Performance of B+-tree for Non-volatile Memory with Sentinels

The next-generation non-volatile memory (NVM) is striding into computer ...
research
04/24/2018

Cache-aware data structures for packet forwarding tables on general purpose CPUs

Longest prefix matching has long been the bottleneck of the Bloom filter...
research
12/16/2016

Efficient sparse polynomial factoring using the Funnel heap

This work is a comprehensive extension of Abu-Salem et al. (2015) that i...
research
06/14/2019

Dynamic Path-Decomposed Tries

A keyword dictionary is an associative array whose keys are strings. Rec...
research
12/04/2019

L3 Fusion: Fast Transformed Convolutions on CPUs

Fast convolutions via transforms, either Winograd or FFT, had emerged as...
research
01/20/2018

Pointer-Chase Prefetcher for Linked Data Structures

Caches only exploit spatial and temporal locality in a set of address re...

Please sign up or login with your details

Forgot password? Click here to reset