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

Reply via email to