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

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

> Also note that Boost has a 128-bit integer type, though I don't know how fast 
> it is:

Repeated my earlier test with boost int128.

typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
    128, 128, boost::multiprecision::signed_magnitude, 
boost::multiprecision::unchecked,
    void>>
    int128_t;

||Operation||Time with 2 64-bit Integers||Time with boost int128||Time with 
int128||
|Add|31|57|28|
|Subtract|30|77|27|
|Multiply|63|60|28|
|Divide|409|181|170|

Boost implementation is better than the util/Decimal128 impl for divide, but 
worser for add/subtract. In all cases, int128 performs better.

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