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]

Reply via email to