[ 
https://issues.apache.org/jira/browse/HIVE-16311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15959161#comment-15959161
 ] 

Xuefu Zhang commented on HIVE-16311:
------------------------------------

I agree with [~mmccline] that Hive's methodology in dealing with decimal 
operations is keeping intermediate result as precise as possible and possibly 
scaling it back to fit to the precision/scale of the final result 
(precision/scale enforcement). (The final result's precision/scale is 
statically determined.) I understand that performance may gain if we shortcut 
the precision/scale for the intermediate result, but this would violate the 
original design principle and cause differences such as 137174.210013717333 vs 
137174.210013717330.

Sorry for not being clear from the beginning (I wasn't reading the change 
carefully), but I don't think this is a time to make such a small yet 
significant change.

Trailing zeroes are added purely for display purpose (HIVE-12063). This is 
rather a neat approach that's also an important part of Hive decimal support.

On thing to clarify though, is whether the new decimal is slower than the old 
decimal in division. If so, we need to find out why and fix. Otherwise, for 
performance concern regarding division, we should optimize it or provide a new 
implementation, while keeping Hive's design principles.

> Improve the performance for FastHiveDecimalImpl.fastDivide
> ----------------------------------------------------------
>
>                 Key: HIVE-16311
>                 URL: https://issues.apache.org/jira/browse/HIVE-16311
>             Project: Hive
>          Issue Type: Improvement
>    Affects Versions: 2.2.0
>            Reporter: Colin Ma
>            Assignee: Colin Ma
>             Fix For: 3.0.0
>
>         Attachments: HIVE-16311.001.patch, HIVE-16311.002.patch, 
> HIVE-16311.003.patch, HIVE-16311.004.patch, HIVE-16311.005.patch, 
> HIVE-16311.withTrailingZero.patch
>
>
> FastHiveDecimalImpl.fastDivide is poor performance when evaluate the 
> expression as 12345.67/123.45
> There are 2 points can be improved:
> 1. Don't always use HiveDecimal.MAX_SCALE as scale when do the 
> BigDecimal.divide.
> 2. Get the precision for BigInteger in a fast way if possible.



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

Reply via email to