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