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

Pindikura Ravindra commented on ARROW-3701:
-------------------------------------------

I ran a simple test on my desktop (macbook pro) to iterate over 10M entries of 
two input arrays, and perform an arithmetic operation (in a single thread). 
Compared the perf of arrow/util/Decimal128 with another implementation that 
does the same operations but with __int128 (instead of two int64).

The results were (in ms) :
||Operation||Time with 2 64-bit Integers||Time with int128||
|Add|31|28|
|Subtract|30|27|
|Multiply|63|28|
|Divide|409|170|

So, add/subtract are equally efficient. but, multiply and divide perform much 
better with gcc's __int128.

 

> [Gandiva] Add support for decimal operations
> --------------------------------------------
>
>                 Key: ARROW-3701
>                 URL: https://issues.apache.org/jira/browse/ARROW-3701
>             Project: Apache Arrow
>          Issue Type: Task
>          Components: Gandiva
>            Reporter: Pindikura Ravindra
>            Assignee: Pindikura Ravindra
>            Priority: Major
>
> To begin with, will add support for 128-bit decimals. There are two parts :
>  # llvm_generator needs to understand decimal types (value, precision, scale)
>  # code decimal operations : add/subtract/multiply/divide/mod/..
>  ** This will be c++ code that can be pre-compiled to emit IR code



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to