Tim Armstrong has posted comments on this change. Change subject: Impala-3286: Prefetching For Phj Probing. ......................................................................
Patch Set 4: (4 comments) I think not prefetching http://gerrit.cloudera.org:8080/#/c/2959/4/be/src/exec/partitioned-hash-join-node-ir.cc File be/src/exec/partitioned-hash-join-node-ir.cc: Line 289: uint32_t hash = expr_vals_cache->ExprValuesHash(); FWIW I got some speedups for small hash tables in the agg by hoisting some of these lookups out of the non-null branch. In the NULL case we don't use the value, but it's safe to load it. Line 369: current_probe_row_ != NULL || !probe_batch_iterator.AtEnd(); > why are both of these needed? why isn't the AtEnd() check sufficient? or re It has to handle current_probe_row_ carrying over from the previous ProcessProbeBatch() - same reason as its do { } while (NextProbeRow()) not while(NextProbeRow()) Line 523: TupleRow* row = batch_iter.Get(); FWIW I got some speedups for small hash tables in the agg by hoisting some of these lookups out of the non-null branch. In the NULL case we don't use the value, but it's safe to load it. Line 527: } > shouldn't we terminate this loop when we hit expr_vals_cache->AtEnd()? or d The loop bounds exactly match the loop bounds of the loop above that filled the cache, so the check would be redundant. -- To view, visit http://gerrit.cloudera.org:8080/2959 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ib42b93d99d09c833571e39d20d58c11ef73f3cc0 Gerrit-PatchSet: 4 Gerrit-Project: Impala Gerrit-Branch: cdh5-trunk Gerrit-Owner: Michael Ho <[email protected]> Gerrit-Reviewer: Dan Hecht <[email protected]> Gerrit-Reviewer: Michael Ho <[email protected]> Gerrit-Reviewer: Mostafa Mokhtar <[email protected]> Gerrit-Reviewer: Tim Armstrong <[email protected]> Gerrit-HasComments: Yes
