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/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 4ca5be94a7 [Improvement] remove unnecessary memcpy in 
OlapBlockDataConvertor (#9491)
4ca5be94a7 is described below

commit 4ca5be94a7940a88b4c8150873a9cb5b69931244
Author: Gabriel <[email protected]>
AuthorDate: Fri May 13 16:13:07 2022 +0800

    [Improvement] remove unnecessary memcpy in OlapBlockDataConvertor (#9491)
    
    * [Improvement] remove unnecessary memcpy in OlapBlockDataConvertor
---
 be/src/vec/olap/olap_data_convertor.cpp | 18 +++++-------------
 be/src/vec/olap/olap_data_convertor.h   |  1 -
 2 files changed, 5 insertions(+), 14 deletions(-)

diff --git a/be/src/vec/olap/olap_data_convertor.cpp 
b/be/src/vec/olap/olap_data_convertor.cpp
index c6dbd618ad..29985d45b1 100644
--- a/be/src/vec/olap/olap_data_convertor.cpp
+++ b/be/src/vec/olap/olap_data_convertor.cpp
@@ -317,8 +317,6 @@ void 
OlapBlockDataConvertor::OlapColumnDataConvertorChar::set_source_column(
         const ColumnWithTypeAndName& typed_column, size_t row_pos, size_t 
num_rows) {
     
OlapBlockDataConvertor::OlapColumnDataConvertorBase::set_source_column(typed_column,
 row_pos,
                                                                            
num_rows);
-    _raw_data.resize(_length * num_rows);
-    memset(_raw_data.data(), 0, _length * num_rows);
     _slice.resize(num_rows);
 }
 
@@ -352,21 +350,18 @@ Status 
OlapBlockDataConvertor::OlapColumnDataConvertorChar::convert_to_olap() {
     const ColumnString::Char* char_data = column_string->get_chars().data();
     const ColumnString::Offset* offset_cur = 
column_string->get_offsets().data() + _row_pos;
     const ColumnString::Offset* offset_end = offset_cur + _num_rows;
-    char* raw_data = _raw_data.data();
     Slice* slice = _slice.data();
     size_t string_length;
     size_t string_offset = *(offset_cur - 1);
-    size_t slice_size = _length;
+    [[maybe_unused]] size_t slice_size = _length;
     if (_nullmap) {
         const UInt8* nullmap_cur = _nullmap + _row_pos;
         while (offset_cur != offset_end) {
             if (!*nullmap_cur) {
                 string_length = *offset_cur - string_offset - 1;
                 assert(string_length <= slice_size);
-                memcpy(raw_data, char_data + string_offset, string_length);
-
-                slice->data = raw_data;
-                slice->size = slice_size;
+                slice->data = (char*)char_data + string_offset;
+                slice->size = string_length;
             } else {
                 // TODO: this may not be neccessary, check and remove later
                 slice->data = nullptr;
@@ -377,22 +372,19 @@ Status 
OlapBlockDataConvertor::OlapColumnDataConvertorChar::convert_to_olap() {
             ++nullmap_cur;
             ++slice;
             ++offset_cur;
-            raw_data += slice_size;
         }
         assert(nullmap_cur == _nullmap + _row_pos + _num_rows && slice == 
_slice.get_end_ptr());
     } else {
         while (offset_cur != offset_end) {
             string_length = *offset_cur - string_offset - 1;
             assert(string_length <= slice_size);
-            memcpy(raw_data, char_data + string_offset, string_length);
 
-            slice->data = raw_data;
-            slice->size = slice_size;
+            slice->data = (char*)char_data + string_offset;
+            slice->size = string_length;
 
             string_offset = *offset_cur;
             ++slice;
             ++offset_cur;
-            raw_data += slice_size;
         }
         assert(slice == _slice.get_end_ptr());
     }
diff --git a/be/src/vec/olap/olap_data_convertor.h 
b/be/src/vec/olap/olap_data_convertor.h
index c51bc257bf..71d08b4ae9 100644
--- a/be/src/vec/olap/olap_data_convertor.h
+++ b/be/src/vec/olap/olap_data_convertor.h
@@ -101,7 +101,6 @@ private:
     private:
         size_t _length;
         PaddedPODArray<Slice> _slice;
-        PaddedPODArray<char> _raw_data;
     };
 
     class OlapColumnDataConvertorVarChar : public OlapColumnDataConvertorBase {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to