Alexey Serbin has submitted this change and it was merged. ( http://gerrit.cloudera.org:8080/14453 )
Change subject: [cfile] KUDU-2852 Push predicate evaluation for int type RLE decoder ...................................................................... [cfile] KUDU-2852 Push predicate evaluation for int type RLE decoder This change adds optimization that evaluates the predicate for each run instead of materializing each cell and then applying the predicate for integer datatype RLE decoder. Added a utility method in SelectionVectorView to clear bits from caller specified offset. This helps clear batch of rows from a caller maintained offset without advancing the internal row_offset in SelectionVectorView. Tests: To benchmark, adjusted the all_types-scan-correctness-test and tested with 1M rows and run-length of 10k repeating integer values on a release build. Following are results with different predicate values where 1st line is scan time duration with decoder level evaluation and 2nd line is scan time duration with decoder level evaluation turned off (i.e. --materializing_iterator_decoder_eval = false) Small subset: [5 10) 3-5ms 9-12ms Large subset ~50%: [2000 - 7000) 3-5ms 8-9ms Select All: [1, 10001) 12-15ms 18-22ms Select None: [10001 10003) 3-5ms 9-12ms Biggest improvement of around %60 is seen in cases where small subset or no rows are selected. As more rows are selected the improvement reduces to 40-50%. Change-Id: I6e05775ec1301d3d0b0365a7704b8e962a20455e Reviewed-on: http://gerrit.cloudera.org:8080/14380 Tested-by: Kudu Jenkins Reviewed-by: Andrew Wong <[email protected]> (cherry picked from commit 384a535a0079ec634d57b55593962cae4cb6f19a) Reviewed-on: http://gerrit.cloudera.org:8080/14453 Reviewed-by: Alexey Serbin <[email protected]> --- M src/kudu/cfile/rle_block.h M src/kudu/common/rowblock.h M src/kudu/tablet/all_types-scan-correctness-test.cc 3 files changed, 274 insertions(+), 53 deletions(-) Approvals: Alexey Serbin: Looks good to me, approved Kudu Jenkins: Verified -- To view, visit http://gerrit.cloudera.org:8080/14453 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: branch-1.11.x Gerrit-MessageType: merged Gerrit-Change-Id: I6e05775ec1301d3d0b0365a7704b8e962a20455e Gerrit-Change-Number: 14453 Gerrit-PatchSet: 2 Gerrit-Owner: Grant Henke <[email protected]> Gerrit-Reviewer: Alexey Serbin <[email protected]> Gerrit-Reviewer: Bankim Bhavsar <[email protected]> Gerrit-Reviewer: Kudu Jenkins (120)
