dianfu commented on a change in pull request #11118: [FLINK-16072][python] 
Optimize the performance of the write/read null mask
URL: https://github.com/apache/flink/pull/11118#discussion_r381200524
 
 

 ##########
 File path: flink-python/pyflink/fn_execution/coder_impl.py
 ##########
 @@ -25,56 +25,331 @@
 
 
 class FlattenRowCoderImpl(StreamCoderImpl):
+    null_mask_search_table = ((False, False, False, False, False, False, 
False, False),
+                              (False, False, False, False, False, False, 
False, True),
+                              (False, False, False, False, False, False, True, 
False),
+                              (False, False, False, False, False, False, True, 
True),
+                              (False, False, False, False, False, True, False, 
False),
+                              (False, False, False, False, False, True, False, 
True),
+                              (False, False, False, False, False, True, True, 
False),
+                              (False, False, False, False, False, True, True, 
True),
+                              (False, False, False, False, True, False, False, 
False),
+                              (False, False, False, False, True, False, False, 
True),
+                              (False, False, False, False, True, False, True, 
False),
+                              (False, False, False, False, True, False, True, 
True),
+                              (False, False, False, False, True, True, False, 
False),
+                              (False, False, False, False, True, True, False, 
True),
+                              (False, False, False, False, True, True, True, 
False),
+                              (False, False, False, False, True, True, True, 
True),
+                              (False, False, False, True, False, False, False, 
False),
+                              (False, False, False, True, False, False, False, 
True),
+                              (False, False, False, True, False, False, True, 
False),
+                              (False, False, False, True, False, False, True, 
True),
+                              (False, False, False, True, False, True, False, 
False),
+                              (False, False, False, True, False, True, False, 
True),
+                              (False, False, False, True, False, True, True, 
False),
+                              (False, False, False, True, False, True, True, 
True),
+                              (False, False, False, True, True, False, False, 
False),
+                              (False, False, False, True, True, False, False, 
True),
+                              (False, False, False, True, True, False, True, 
False),
+                              (False, False, False, True, True, False, True, 
True),
+                              (False, False, False, True, True, True, False, 
False),
+                              (False, False, False, True, True, True, False, 
True),
+                              (False, False, False, True, True, True, True, 
False),
+                              (False, False, False, True, True, True, True, 
True),
+                              (False, False, True, False, False, False, False, 
False),
+                              (False, False, True, False, False, False, False, 
True),
+                              (False, False, True, False, False, False, True, 
False),
+                              (False, False, True, False, False, False, True, 
True),
+                              (False, False, True, False, False, True, False, 
False),
+                              (False, False, True, False, False, True, False, 
True),
+                              (False, False, True, False, False, True, True, 
False),
+                              (False, False, True, False, False, True, True, 
True),
+                              (False, False, True, False, True, False, False, 
False),
+                              (False, False, True, False, True, False, False, 
True),
+                              (False, False, True, False, True, False, True, 
False),
+                              (False, False, True, False, True, False, True, 
True),
+                              (False, False, True, False, True, True, False, 
False),
+                              (False, False, True, False, True, True, False, 
True),
+                              (False, False, True, False, True, True, True, 
False),
+                              (False, False, True, False, True, True, True, 
True),
+                              (False, False, True, True, False, False, False, 
False),
+                              (False, False, True, True, False, False, False, 
True),
+                              (False, False, True, True, False, False, True, 
False),
+                              (False, False, True, True, False, False, True, 
True),
+                              (False, False, True, True, False, True, False, 
False),
+                              (False, False, True, True, False, True, False, 
True),
+                              (False, False, True, True, False, True, True, 
False),
+                              (False, False, True, True, False, True, True, 
True),
+                              (False, False, True, True, True, False, False, 
False),
+                              (False, False, True, True, True, False, False, 
True),
+                              (False, False, True, True, True, False, True, 
False),
+                              (False, False, True, True, True, False, True, 
True),
+                              (False, False, True, True, True, True, False, 
False),
+                              (False, False, True, True, True, True, False, 
True),
+                              (False, False, True, True, True, True, True, 
False),
+                              (False, False, True, True, True, True, True, 
True),
+                              (False, True, False, False, False, False, False, 
False),
+                              (False, True, False, False, False, False, False, 
True),
+                              (False, True, False, False, False, False, True, 
False),
+                              (False, True, False, False, False, False, True, 
True),
+                              (False, True, False, False, False, True, False, 
False),
+                              (False, True, False, False, False, True, False, 
True),
+                              (False, True, False, False, False, True, True, 
False),
+                              (False, True, False, False, False, True, True, 
True),
+                              (False, True, False, False, True, False, False, 
False),
+                              (False, True, False, False, True, False, False, 
True),
+                              (False, True, False, False, True, False, True, 
False),
+                              (False, True, False, False, True, False, True, 
True),
+                              (False, True, False, False, True, True, False, 
False),
+                              (False, True, False, False, True, True, False, 
True),
+                              (False, True, False, False, True, True, True, 
False),
+                              (False, True, False, False, True, True, True, 
True),
+                              (False, True, False, True, False, False, False, 
False),
+                              (False, True, False, True, False, False, False, 
True),
+                              (False, True, False, True, False, False, True, 
False),
+                              (False, True, False, True, False, False, True, 
True),
+                              (False, True, False, True, False, True, False, 
False),
+                              (False, True, False, True, False, True, False, 
True),
+                              (False, True, False, True, False, True, True, 
False),
+                              (False, True, False, True, False, True, True, 
True),
+                              (False, True, False, True, True, False, False, 
False),
+                              (False, True, False, True, True, False, False, 
True),
+                              (False, True, False, True, True, False, True, 
False),
+                              (False, True, False, True, True, False, True, 
True),
+                              (False, True, False, True, True, True, False, 
False),
+                              (False, True, False, True, True, True, False, 
True),
+                              (False, True, False, True, True, True, True, 
False),
+                              (False, True, False, True, True, True, True, 
True),
+                              (False, True, True, False, False, False, False, 
False),
+                              (False, True, True, False, False, False, False, 
True),
+                              (False, True, True, False, False, False, True, 
False),
+                              (False, True, True, False, False, False, True, 
True),
+                              (False, True, True, False, False, True, False, 
False),
+                              (False, True, True, False, False, True, False, 
True),
+                              (False, True, True, False, False, True, True, 
False),
+                              (False, True, True, False, False, True, True, 
True),
+                              (False, True, True, False, True, False, False, 
False),
+                              (False, True, True, False, True, False, False, 
True),
+                              (False, True, True, False, True, False, True, 
False),
+                              (False, True, True, False, True, False, True, 
True),
+                              (False, True, True, False, True, True, False, 
False),
+                              (False, True, True, False, True, True, False, 
True),
+                              (False, True, True, False, True, True, True, 
False),
+                              (False, True, True, False, True, True, True, 
True),
+                              (False, True, True, True, False, False, False, 
False),
+                              (False, True, True, True, False, False, False, 
True),
+                              (False, True, True, True, False, False, True, 
False),
+                              (False, True, True, True, False, False, True, 
True),
+                              (False, True, True, True, False, True, False, 
False),
+                              (False, True, True, True, False, True, False, 
True),
+                              (False, True, True, True, False, True, True, 
False),
+                              (False, True, True, True, False, True, True, 
True),
+                              (False, True, True, True, True, False, False, 
False),
+                              (False, True, True, True, True, False, False, 
True),
+                              (False, True, True, True, True, False, True, 
False),
+                              (False, True, True, True, True, False, True, 
True),
+                              (False, True, True, True, True, True, False, 
False),
+                              (False, True, True, True, True, True, False, 
True),
+                              (False, True, True, True, True, True, True, 
False),
+                              (False, True, True, True, True, True, True, 
True),
+                              (True, False, False, False, False, False, False, 
False),
+                              (True, False, False, False, False, False, False, 
True),
+                              (True, False, False, False, False, False, True, 
False),
+                              (True, False, False, False, False, False, True, 
True),
+                              (True, False, False, False, False, True, False, 
False),
+                              (True, False, False, False, False, True, False, 
True),
+                              (True, False, False, False, False, True, True, 
False),
+                              (True, False, False, False, False, True, True, 
True),
+                              (True, False, False, False, True, False, False, 
False),
+                              (True, False, False, False, True, False, False, 
True),
+                              (True, False, False, False, True, False, True, 
False),
+                              (True, False, False, False, True, False, True, 
True),
+                              (True, False, False, False, True, True, False, 
False),
+                              (True, False, False, False, True, True, False, 
True),
+                              (True, False, False, False, True, True, True, 
False),
+                              (True, False, False, False, True, True, True, 
True),
+                              (True, False, False, True, False, False, False, 
False),
+                              (True, False, False, True, False, False, False, 
True),
+                              (True, False, False, True, False, False, True, 
False),
+                              (True, False, False, True, False, False, True, 
True),
+                              (True, False, False, True, False, True, False, 
False),
+                              (True, False, False, True, False, True, False, 
True),
+                              (True, False, False, True, False, True, True, 
False),
+                              (True, False, False, True, False, True, True, 
True),
+                              (True, False, False, True, True, False, False, 
False),
+                              (True, False, False, True, True, False, False, 
True),
+                              (True, False, False, True, True, False, True, 
False),
+                              (True, False, False, True, True, False, True, 
True),
+                              (True, False, False, True, True, True, False, 
False),
+                              (True, False, False, True, True, True, False, 
True),
+                              (True, False, False, True, True, True, True, 
False),
+                              (True, False, False, True, True, True, True, 
True),
+                              (True, False, True, False, False, False, False, 
False),
+                              (True, False, True, False, False, False, False, 
True),
+                              (True, False, True, False, False, False, True, 
False),
+                              (True, False, True, False, False, False, True, 
True),
+                              (True, False, True, False, False, True, False, 
False),
+                              (True, False, True, False, False, True, False, 
True),
+                              (True, False, True, False, False, True, True, 
False),
+                              (True, False, True, False, False, True, True, 
True),
+                              (True, False, True, False, True, False, False, 
False),
+                              (True, False, True, False, True, False, False, 
True),
+                              (True, False, True, False, True, False, True, 
False),
+                              (True, False, True, False, True, False, True, 
True),
+                              (True, False, True, False, True, True, False, 
False),
+                              (True, False, True, False, True, True, False, 
True),
+                              (True, False, True, False, True, True, True, 
False),
+                              (True, False, True, False, True, True, True, 
True),
+                              (True, False, True, True, False, False, False, 
False),
+                              (True, False, True, True, False, False, False, 
True),
+                              (True, False, True, True, False, False, True, 
False),
+                              (True, False, True, True, False, False, True, 
True),
+                              (True, False, True, True, False, True, False, 
False),
+                              (True, False, True, True, False, True, False, 
True),
+                              (True, False, True, True, False, True, True, 
False),
+                              (True, False, True, True, False, True, True, 
True),
+                              (True, False, True, True, True, False, False, 
False),
+                              (True, False, True, True, True, False, False, 
True),
+                              (True, False, True, True, True, False, True, 
False),
+                              (True, False, True, True, True, False, True, 
True),
+                              (True, False, True, True, True, True, False, 
False),
+                              (True, False, True, True, True, True, False, 
True),
+                              (True, False, True, True, True, True, True, 
False),
+                              (True, False, True, True, True, True, True, 
True),
+                              (True, True, False, False, False, False, False, 
False),
+                              (True, True, False, False, False, False, False, 
True),
+                              (True, True, False, False, False, False, True, 
False),
+                              (True, True, False, False, False, False, True, 
True),
+                              (True, True, False, False, False, True, False, 
False),
+                              (True, True, False, False, False, True, False, 
True),
+                              (True, True, False, False, False, True, True, 
False),
+                              (True, True, False, False, False, True, True, 
True),
+                              (True, True, False, False, True, False, False, 
False),
+                              (True, True, False, False, True, False, False, 
True),
+                              (True, True, False, False, True, False, True, 
False),
+                              (True, True, False, False, True, False, True, 
True),
+                              (True, True, False, False, True, True, False, 
False),
+                              (True, True, False, False, True, True, False, 
True),
+                              (True, True, False, False, True, True, True, 
False),
+                              (True, True, False, False, True, True, True, 
True),
+                              (True, True, False, True, False, False, False, 
False),
+                              (True, True, False, True, False, False, False, 
True),
+                              (True, True, False, True, False, False, True, 
False),
+                              (True, True, False, True, False, False, True, 
True),
+                              (True, True, False, True, False, True, False, 
False),
+                              (True, True, False, True, False, True, False, 
True),
+                              (True, True, False, True, False, True, True, 
False),
+                              (True, True, False, True, False, True, True, 
True),
+                              (True, True, False, True, True, False, False, 
False),
+                              (True, True, False, True, True, False, False, 
True),
+                              (True, True, False, True, True, False, True, 
False),
+                              (True, True, False, True, True, False, True, 
True),
+                              (True, True, False, True, True, True, False, 
False),
+                              (True, True, False, True, True, True, False, 
True),
+                              (True, True, False, True, True, True, True, 
False),
+                              (True, True, False, True, True, True, True, 
True),
+                              (True, True, True, False, False, False, False, 
False),
+                              (True, True, True, False, False, False, False, 
True),
+                              (True, True, True, False, False, False, True, 
False),
+                              (True, True, True, False, False, False, True, 
True),
+                              (True, True, True, False, False, True, False, 
False),
+                              (True, True, True, False, False, True, False, 
True),
+                              (True, True, True, False, False, True, True, 
False),
+                              (True, True, True, False, False, True, True, 
True),
+                              (True, True, True, False, True, False, False, 
False),
+                              (True, True, True, False, True, False, False, 
True),
+                              (True, True, True, False, True, False, True, 
False),
+                              (True, True, True, False, True, False, True, 
True),
+                              (True, True, True, False, True, True, False, 
False),
+                              (True, True, True, False, True, True, False, 
True),
+                              (True, True, True, False, True, True, True, 
False),
+                              (True, True, True, False, True, True, True, 
True),
+                              (True, True, True, True, False, False, False, 
False),
+                              (True, True, True, True, False, False, False, 
True),
+                              (True, True, True, True, False, False, True, 
False),
+                              (True, True, True, True, False, False, True, 
True),
+                              (True, True, True, True, False, True, False, 
False),
+                              (True, True, True, True, False, True, False, 
True),
+                              (True, True, True, True, False, True, True, 
False),
+                              (True, True, True, True, False, True, True, 
True),
+                              (True, True, True, True, True, False, False, 
False),
+                              (True, True, True, True, True, False, False, 
True),
+                              (True, True, True, True, True, False, True, 
False),
+                              (True, True, True, True, True, False, True, 
True),
+                              (True, True, True, True, True, True, False, 
False),
+                              (True, True, True, True, True, True, False, 
True),
+                              (True, True, True, True, True, True, True, 
False),
+                              (True, True, True, True, True, True, True, True))
+
+    null_byte_search_table = (0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01)
 
     def __init__(self, field_coders):
         self._field_coders = field_coders
         self._filed_count = len(field_coders)
+        self._complete_byte_num = self._filed_count // 8
+        self._remaining_bit_num = self._filed_count % 8
 
     def encode_to_stream(self, value, out_stream, nested):
-        self.write_null_mask(value, out_stream)
+        self.write_null_mask(value, self._complete_byte_num, 
self._remaining_bit_num, out_stream)
         for i in range(self._filed_count):
-            if value[i] is not None:
-                self._field_coders[i].encode_to_stream(value[i], out_stream, 
nested)
+            item = value[i]
+            if item is not None:
+                self._field_coders[i].encode_to_stream(item, out_stream, 
nested)
 
     def decode_from_stream(self, in_stream, nested):
-        null_mask = self.read_null_mask(self._filed_count, in_stream)
+        null_mask = self.read_null_mask(self._complete_byte_num, 
self._remaining_bit_num, in_stream)
 
 Review comment:
   ditto

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to