Hello Kudu Jenkins,

I'd like you to reexamine a change.  Please visit

    http://gerrit.cloudera.org:8080/4164

to look at the new patch set (#2).

Change subject: Inlined dispatch for predicate evaluation
......................................................................

Inlined dispatch for predicate evaluation

In order to evaluate a predicate, we must first determine the correct
comparator to handle the physical type of interest. Currently, this occurs once
per batch when ColumnPredicate::Evaluate() is called. A call to this will
dispatch the comparator as a lambda to be applied in a loop over all rows in
the batch.

For ColumnPredicate::EvaluateCell(), rather than occuring in batches, dispatch
occurs for each cell. This particularly slows down decoder-level evaluation,
which falls back on evaluating cell-by-cell rather than in batches. To
remediate this, the dispatch has been templatized here to remediate the cost of
repeated dispatch.

This figure shows the performance of dictionary encoding for decoder-level
evaluation without this templating adjustment. The query selects a single value
out of a dictionary-encoded column containing 1M unique strings.
https://raw.githubusercontent.com/anjuwong/kudu/300f1e8bdf05bc16bdacacca22482e579e49de67/docs/images/SELECT_OUTSIDE_OF_RANGE_non_inlined.png

Compare the above with the plot on the right, which is the result of the same
query, but with inlined dispatch.
https://raw.githubusercontent.com/anjuwong/kudu/300f1e8bdf05bc16bdacacca22482e579e49de67/docs/images/SELECT_OUTSIDE_OF_RANGE_inlined.png

Change-Id: Iccfac9bc899362b442337050795b5ca8c4101268
---
M src/kudu/cfile/binary_plain_block.cc
M src/kudu/cfile/cfile_reader.cc
M src/kudu/common/column_predicate.cc
M src/kudu/common/column_predicate.h
4 files changed, 83 insertions(+), 44 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/64/4164/2
-- 
To view, visit http://gerrit.cloudera.org:8080/4164
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Iccfac9bc899362b442337050795b5ca8c4101268
Gerrit-PatchSet: 2
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Andrew Wong <andrew.w...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins

Reply via email to