RoaringBitmap / RoaringBitmap/roaring-rs
Optimization: Galloping Array-Array operations
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 957
- Forks
- 119
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 1
Description
Most of the Array-Array operations use a two pointer walk. I think there may be gains to be had from "galloping" while merging.
To my knowledge this is a novel optimization. CRoaring vectorized Array-Array intersection is galloping (according to the paper) however AFAICT none of the scalar Array-Array ops perform galloping.
Links
https://en.wikipedia.org/wiki/Timsort#Galloping_mode_during_merge
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/TimSort.java#l701
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the scalar Array-Array operations that currently use a two-pointer walk. Read the linked Timsort and CRoaring references to understand galloping during merges, then determine which operations could benefit and how to measure the change. Done means a validated optimization with evidence that it improves the relevant operations without changing their results.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- performance
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100