feat: batching execution (single iterator queries)#390
Conversation
|
@seqbenchbot up main search-keyword-exact-match-warm |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #390 +/- ##
==========================================
+ Coverage 71.40% 71.54% +0.14%
==========================================
Files 219 220 +1
Lines 16454 16568 +114
==========================================
+ Hits 11749 11854 +105
- Misses 3834 3840 +6
- Partials 871 874 +3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
🔴 Performance DegradationSome benchmarks have degraded compared to the previous run. Show table
|
|
@seqbenchbot down 73ed4722 |
|
Nice, @cheb0 The benchmark with identificator Show summary
Have a great time! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
🔴 Performance DegradationSome benchmarks have degraded compared to the previous run. Show table
|
# Conflicts: # frac/processor/search.go
Description
No significant perf improvement, just introduce new types:
LIDBatch,BatchedNode. Batch mode enabled for single-iterator queries for sealed fractions.iterateEvalTreeis now works with batches. For one-by-one lid we batch them a bit, for batched flow we just bypass batches as is. To batch one-by-one eval tree lids, a buffer is used. It preallocated with 64k slots.LIDBatchcurrently stores lids as[]uint32sorted asc. I had to introduce an unneeded copying from LID batch format to slice ofnode.LIDso that we have a single iterateEvalTree function. It's a cost of avoiding code duplication.single-iterator query perf
For single-iterator query we transfer batches directly. Hot query perf
service:X(hist, total is 1.6 million):main branch:
29.578 ms
PR:
23.854 ms
stopwatch eval_tree_next fixed
As part of the PR, stopwatch usage for
eval_tree_nextis adrressed. For low-cardinality queryservice:X AND level:4(histogram) it reports the following numbers:Search (hot) completed. Found 100 documents. Took: 15.812 ms
total >> iterate_eval_tree >> eval_tree_next -> 95.407644ms
With this PR:
Search (hot) completed. Found 100 documents. Took: 13.958 ms
total >> iterate_eval_tree >> eval_tree_next -> 5.5113ms
Part of #329