Array Layouts for Comparison-Based Searching
Not on the map. Why?
Abstract (arXiv)
We attempt to determine the best order and search algorithm to store n comparable data items in an array, A, of length n so that we can, for any query value, x, quickly find the smallest value in A that is greater than or equal to x. In particular, we consider the important case where there are many such queries to the same array, A, which resides entirely in RAM. In addition to the obvious sorted order/binary search combination we consider the Eytzinger (BFS) layout normally used for heaps, an implicit B-tree layout that generalizes the Eytzinger layout, and the van Emde Boas layout commonly used in the cache-oblivious algorithms literature. After extensive testing and tuning on a wide variety of modern hardware, we arrive at the conclusion that, for small values of n, sorted order, combined with a good implementation of binary search is best. For larger values of n, we arrive at the surprising conclusion that the Eytzinger layout is usually the fastest. The latter conclusion is unexpected and goes counter to earlier experimental work by Brodal, Fagerberg, and Jacob (SODA~2003), who concluded that both the B-tree and van Emde Boas layouts were faster than the Eytzinger layout for large values of n. Our fastest C++ implementations, when compiled, use conditional moves to avoid branch mispredictions and prefetching to reduce cache latency.
Key facts. Cited by 4 papers in the map (data through 14 Oct 2026). First posted on arXiv 16 Sep 2015.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2021: 1; 2022: 2; 2023: 1.
4 papers.
- 2021Learned Sorted Table Search and Static Indexes in Small Model Spacecited by 4
- 2022On the Suitability of Neural Networks as Building Blocks for The Design of Efficient Learned Indexescited by 3
- 2022Standard Vs Uniform Binary Search and Their Variants in Learned Static Indexing: The Case of the Searching on Sorted Data Benchmarking Software Platformcited by 2
- 2023From Specific to Generic Learned Sorted Set Dictionaries: A Theoretically Sound Paradigm Yelding Competitive Data Structural Boosters in Practicecited by 0
- 2023From Specific to Generic Learned Sorted Set Dictionaries: A Theoretically Sound Paradigm Yelding Competitive Data Structural Boosters in Practice2 Sep 2023
- 2022On the Suitability of Neural Networks as Building Blocks for The Design of Efficient Learned Indexes21 Feb 2022
- 2022Standard Vs Uniform Binary Search and Their Variants in Learned Static Indexing: The Case of the Searching on Sorted Data Benchmarking Software Platform5 Jan 2022
- 2021Learned Sorted Table Search and Static Indexes in Small Model Space19 Jul 2021