Skip to content

Commit

Permalink
[Enhancement]generate new range faster (StarRocks#55627)
Browse files Browse the repository at this point in the history
Signed-off-by: zombee0 <ewang2027@gmail.com>
  • Loading branch information
zombee0 authored Feb 8, 2025
1 parent 976847f commit 712fc09
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions be/src/storage/range.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,21 @@ inline Range<T> Range<T>::intersection(const Range& r) const {
template <typename T>
inline Range<T> Range<T>::filter(const Filter* const filter) const {
DCHECK(span_size() == filter->size());
int32_t start = filter->size();
const int32_t len = filter->size();
int32_t start = len;
int32_t end = -1;
for (int32_t i = 0; i < filter->size(); i++) {
start = start > i && filter->data()[i] == 1 ? i : start;
end = end < i && filter->data()[i] == 1 ? i : end;
for (int32_t i = 0; i < len; i++) {
if (filter->data()[i] == 1) {
start = i;
break;
}
}

for (int32_t i = len - 1; i >= 0; i--) {
if (filter->data()[i] == 1) {
end = i;
break;
}
}
return start <= end ? Range<T>(_begin + start, _begin + end + 1) : Range<T>(_begin, _begin);
}
Expand Down

0 comments on commit 712fc09

Please sign in to comment.