Zach Amsden has uploaded a new patch set (#5). Change subject: IMPALA-2020: Inline big number strings ......................................................................
IMPALA-2020: Inline big number strings We can directly spcecify these in the header instead of keeping the constants out in a .o. This lets the compiler inline them in a lot more places, potentially giving better behavior than a table lookup by directly inserting the constant. This in turn allows divides by now known compile time constants to be converted into multiply. Avoiding the table lookup seems to be a win for other types as well, giving anywhere from 18% to ~33% speedup over baseline. This is likely to become even more imporant with big integer divide, which requires additional computation for DECIMAL_V2. Testing: Compare the binary output of decimal-util.cc before and after; ran expr test suite. Before: [localhost:21000] > select sum(cast(cast(l_extendedprice as double) as decimal(14,2))) from tpch10_parquet.lineitem; Query: select sum(cast(cast(l_extendedprice as double) as decimal(14,2))) from tpch10_parquet.lineitem Query submitted at: 2017-02-18 01:23:54 (Coordinator: http://impala-dev:25000) Query progress can be monitored at: http://impala-dev:25000/query_plan?query_id=f0410a35e981a86b:e6d9207000000000 +-------------------------------------------------------------+ | sum(cast(cast(l_extendedprice as double) as decimal(14,2))) | +-------------------------------------------------------------+ | 2293813121802.09 | +-------------------------------------------------------------+ Fetched 1 row(s) in 0.83s After: [localhost:21000] > select sum(cast(cast(l_extendedprice as double) as decimal(14,2))) from tpch10_parquet.lineitem; Query: select sum(cast(cast(l_extendedprice as double) as decimal(14,2))) from tpch10_parquet.lineitem Query submitted at: 2017-02-18 02:23:33 (Coordinator: http://impala-dev:25000) Query progress can be monitored at: http://impala-dev:25000/query_plan?query_id=97438c98a3d950a4:1a45eeb900000000 +-------------------------------------------------------------+ | sum(cast(cast(l_extendedprice as double) as decimal(14,2))) | +-------------------------------------------------------------+ | 2293813121802.09 | +-------------------------------------------------------------+ Fetched 1 row(s) in 0.63s Change-Id: I5095a366d914cebb0b64bd434a08dbb55c90ed30 --- M be/src/benchmarks/overflow-benchmark.cc M be/src/common/init.cc M be/src/exprs/expr-value.h M be/src/runtime/decimal-test.cc M be/src/util/CMakeLists.txt D be/src/util/decimal-util.cc M be/src/util/decimal-util.h 7 files changed, 20 insertions(+), 50 deletions(-) git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/02/5902/5 -- To view, visit http://gerrit.cloudera.org:8080/5902 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I5095a366d914cebb0b64bd434a08dbb55c90ed30 Gerrit-PatchSet: 5 Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-Owner: Zach Amsden <zams...@cloudera.com> Gerrit-Reviewer: Dan Hecht <dhe...@cloudera.com> Gerrit-Reviewer: Jim Apple <jbapple-imp...@apache.org> Gerrit-Reviewer: Michael Ho Gerrit-Reviewer: Zach Amsden <zams...@cloudera.com>