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