[
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)