lidavidm commented on pull request #10608:
URL: https://github.com/apache/arrow/pull/10608#issuecomment-879390143


   Basically, there was a lot of overhead from the fallback loop of "for offset 
in range(block size), if bit is set, copy one element" because 1) the 'copy one 
element' function used CopyBitmap which has a *ton* of overhead for copying one 
bit and 2) unboxing the array every time was costly when done in a loop like 
that (e.g. the profiler showed that even Buffer::data()'s check for whether the 
buffer is on-CPU was hot). But now I've specialized things to avoid most of 
that overhead. 
   
   The reason why I wanted something like VisitSetBitRunsVoid was to go a step 
further and always try to perform block copies instead of falling back to 
one-element-at-a-time-copies. But yes, then it needs to be able to combine two 
bitmaps with AndNot (we want runs of bits where !output_valid & input_valid)


-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to