You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Tim Armstrong (JIRA)" <ji...@apache.org> on 2017/05/22 15:01:04 UTC

[jira] [Created] (IMPALA-5347) Parquet scanner has a lot of small CPU inefficiencies

Tim Armstrong created IMPALA-5347:
-------------------------------------

             Summary: Parquet scanner has a lot of small CPU inefficiencies
                 Key: IMPALA-5347
                 URL: https://issues.apache.org/jira/browse/IMPALA-5347
             Project: IMPALA
          Issue Type: Improvement
          Components: Backend
    Affects Versions: Impala 2.9.0
            Reporter: Tim Armstrong
            Assignee: Tim Armstrong
            Priority: Minor


I spent some time looking at the parquet scanner in perf top. There are a lot of cases where the code is inefficient in ways that are easily fixed. Together this could add up to a significant perf win for scans.

The assembly of the core MaterializeValueBatch() loop has a lot of obvious inefficiency:
* Many loads from memory of values that are constant within the loop
* The generated bit unpacking and dictionary decoding code has a lot of inefficiency, e.g. a complicated bounds check
* Hot functions like DictDecoder::Get() are not inlined.

A lot of time is also spent on some scans calling memset() on one or two bytes inside InitTuple().



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)