This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new d56d88d391 [improvement]No need to memset flags for vectorization
predicates (#10564)
d56d88d391 is described below
commit d56d88d3919c4dcb426451a114494284e18f7c11
Author: Jerry Hu <[email protected]>
AuthorDate: Mon Jul 4 10:23:08 2022 +0800
[improvement]No need to memset flags for vectorization predicates (#10564)
---
be/src/olap/block_column_predicate.cpp | 14 +++++++++-----
be/src/olap/rowset/segment_v2/segment_iterator.cpp | 1 -
2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/be/src/olap/block_column_predicate.cpp
b/be/src/olap/block_column_predicate.cpp
index 251448ca15..9c90d3887d 100644
--- a/be/src/olap/block_column_predicate.cpp
+++ b/be/src/olap/block_column_predicate.cpp
@@ -242,12 +242,16 @@ void
AndBlockColumnPredicate::evaluate_vec(vectorized::MutableColumns& block, ui
_block_column_predicate_vec[0]->evaluate_vec(block, size, flags);
} else {
bool new_flags[size];
+ bool initialized = false;
for (auto block_column_predicate : _block_column_predicate_vec) {
- memset(new_flags, true, size);
- block_column_predicate->evaluate_vec(block, size, new_flags);
-
- for (uint16_t j = 0; j < size; j++) {
- flags[j] &= new_flags[j];
+ if (initialized) {
+ block_column_predicate->evaluate_vec(block, size, new_flags);
+ for (uint16_t j = 0; j < size; j++) {
+ flags[j] &= new_flags[j];
+ }
+ } else {
+ block_column_predicate->evaluate_vec(block, size, flags);
+ initialized = true;
}
}
}
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 1bacc3cecf..e685f26326 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -878,7 +878,6 @@ uint16_t
SegmentIterator::_evaluate_vectorization_predicate(uint16_t* sel_rowid_
uint16_t original_size = selected_size;
bool ret_flags[selected_size];
- memset(ret_flags, 1, selected_size);
_pre_eval_block_predicate->evaluate_vec(_current_return_columns,
selected_size, ret_flags);
uint16_t new_size = 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]