quickwit-oss/tantivy

Optimize Segment Readers Alive Doc Iterator

Open

#296 opened on May 8, 2018

View on GitHub
 (3 comments) (0 reactions) (0 assignees)Rust (499 forks)batch import
enhancementgood first issueperformance

Repository metrics

Stars
 (8,354 stars)
PR merge metrics
 (Avg merge 12d 14h) (20 merged PRs in 30d)

Description

Noted in PR #293

Use the same trick as what is used in the [BitSetDocSet] (https://github.com/tantivy-search/tantivy/blob/78673172d001a0c4c7c73cdd3d9923fc43fc0312/src/query/bitset/mod.rs) which relies on TinySet

In a nutshell : instead of looping on the bitset to find the next thing alive, it uses a special cpu instruction to get the next bit set to 1 in a u64. The instruction is not free, but except if your bitset is EXTREMELY saturated it is generally faster.

https://github.com/tantivy-search/tantivy/pull/293#discussion-diff-186488306R373

Contributor guide