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 df908873bb [improvement]Use std::iota to set values of _block_rowids
in SegmentIterator::_read_columns_by_index (#10386)
df908873bb is described below
commit df908873bb40246a78cc5f58d09c4671786619b0
Author: Jerry Hu <[email protected]>
AuthorDate: Sat Jun 25 04:30:23 2022 +0800
[improvement]Use std::iota to set values of _block_rowids in
SegmentIterator::_read_columns_by_index (#10386)
---
be/src/olap/rowset/segment_v2/segment_iterator.cpp | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 69efdefff4..0769db56eb 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -872,9 +872,11 @@ Status SegmentIterator::_read_columns_by_index(uint32_t
nrows_read_limit, uint32
_read_columns(_first_read_column_ids, _current_return_columns,
rows_to_read));
_cur_rowid += rows_to_read;
if (set_block_rowid) {
- for (uint32_t rid = range_from; rid < range_to; rid++) {
- _block_rowids[nrows_read++] = rid;
- }
+ // Here use std::iota is better performance than for-loop, maybe
for-loop is not vectorized
+ auto start = _block_rowids.data() + nrows_read;
+ auto end = start + rows_to_read;
+ std::iota(start, end, range_from);
+ nrows_read += rows_to_read;
} else {
nrows_read += rows_to_read;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]