Alexey Smirnov created ARROW-17330:
--------------------------------------

             Summary: [C#] Extend ArrowBuffer.BitmapBuilder to improve 
performance of array concatenation
                 Key: ARROW-17330
                 URL: https://issues.apache.org/jira/browse/ARROW-17330
             Project: Apache Arrow
          Issue Type: Improvement
          Components: C#
            Reporter: Alexey Smirnov


Extend ArrowBuffer.BitmapBuilder with Append method overloaded with 
ReadOnlySpan<byte> parameter. 

This allows to add validity bits to the builder more efficiently (especially 
for cases when initial validity bits are added to newly created empty builder). 
 More over it makes BitmapBuilder API more consistent (for example 
ArrowBuffer.Builder<T> does have such method).

Currently adding new bits to existing bitmap is implemented in 
ArrayDataConcatenator, Code adds bit by bit in a cycle converting each to a 
boolean value:

for (int i = 0; i < length; i++)
{
    builder.Append(span.IsEmpty || BitUtility.GetBit(span, i));
}

Initial problem was described in this email: 
https://lists.apache.org/thread/kls6tjq2hclsvd16tw901ooo5soojrmb

PR: https://github.com/apache/arrow/pull/13810




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to