Introduce sweep-bptree, a in memory b+tree implementation which performs better for local access

59 points shuoli84

Hi All,

I'd like to introduce sweep-bptree, A b+tree impl which has some unique features. https://crates.io/crates/sweep-bptree

advantages

  • Compare to std::collections::BTreeMap, performs better for local access pattern, follow up queries tend to query keys near previous queries.
  • Better performance for iter, into\_iter, clone, drop etc.
  • bulk load pre sorted values.

disadvantages

  • slower random access performance, details pls refer to the readme's benchmark section.
  • still early.

why?

While developing poly2tri-rs, I need a performant data structure to maintain the \sweeping/advancing front\\. It's access pattern is like: query a point, doing calculation and modification, then try prev/next point. B+Tree stores all data on leafs, which is quite nice for cache.

Disclaimer: this crate utilize unsafe code to achieve better performance..

Here is the github link: sweep-bptree