<story><title>Static B-Trees: A data structure for faster binary search</title><url>https://en.algorithmica.org/hpc/data-structures/s-tree/</url></story><parent_chain></parent_chain><comment><author>ot</author><text>Very interesting post. The best results I knew of for static ordered search [1] were from the 2015 Khuong-Morin paper [2], which is not cited in the article but the author cites it in the previous post, and in their benchmarks Eytzinger+prefeching performed best. The improvement on top of that is pretty impressive. At the larger sizes, the latencies are basically 1 cache miss (~50ns).&lt;p&gt;However, I have some comment on the benchmark, the iterations have no loop dependency on the previous result, so the CPU is allowed to pipeline some loads. This is rarely representative of real workloads, where the key being searched comes from other computations, so this is more a measure of highest possible reciprocal throughput than actual latency. Would be interesting to see what happens if they make the key being searched a function of the result of the previous lookup. (EDIT: as gfd below points out, the article actually discusses this!)&lt;p&gt;Also some of the tricks only work for 32-bit keys, which allow the vectorized search in nodes. For larger keys, different layouts may still be preferable.&lt;p&gt;[1] Ordered search is when you need to look up keys that are not in the dataset, and find predecessor&amp;#x2F;successor. If you only do exact lookups, a hashtable will almost certainly perform better, though it would require a bit more space.&lt;p&gt;[2] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;arxiv.org&amp;#x2F;pdf&amp;#x2F;1509.05053.pdf&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;arxiv.org&amp;#x2F;pdf&amp;#x2F;1509.05053.pdf&lt;/a&gt;</text></comment>
<story><title>Static B-Trees: A data structure for faster binary search</title><url>https://en.algorithmica.org/hpc/data-structures/s-tree/</url></story><parent_chain></parent_chain><comment><author>ignoramous</author><text>An interesting resource.&lt;p&gt;Just this past day, I prototyped a Skip List backing a sorted key&amp;#x2F;value store, and it was super simple to do so (as compared to AVL &amp;#x2F; Red Black).&lt;p&gt;B-Trees are notorious for their complexity, and so SingleStore (memSQL) reasoned that their move to use Skip Lists to back their tables was justified: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;archive.is&amp;#x2F;Qhpgn&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;archive.is&amp;#x2F;Qhpgn&lt;/a&gt;&lt;p&gt;It would be interesting to see the author attempt faster Skip Lists, as their expertise in this topic seems deep enough.</text></comment>