You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by em...@apache.org on 2019/04/29 18:23:30 UTC

[arrow] branch master updated: ARROW-5225: [Java] Improve performance of BaseValueVector#getValidityBufferSizeFromCount

This is an automated email from the ASF dual-hosted git repository.

emkornfield pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new 36a3782  ARROW-5225: [Java] Improve performance of BaseValueVector#getValidityBufferSizeFromCount
36a3782 is described below

commit 36a3782d680a62a16ba8989c26c533675b516690
Author: tianchen <ni...@alibaba-inc.com>
AuthorDate: Mon Apr 29 11:21:46 2019 -0700

    ARROW-5225: [Java] Improve performance of BaseValueVector#getValidityBufferSizeFromCount
    
    Now in BaseValueVector#getValidityBufferSizeFromCount  and BitVectorHelper#getValidityBufferSize, it uses Math.ceil to calculate size which is not efficient (lots of unnecessary logic in StrictMath#floorOrCeil) . Since the valueCount is always not less than 0, we could simply replace Math.ceil with the following code:
    
    return valueCount % 8 > 0 ? valueCount / 8 + 1 : valueCount / 8;
    
    Author: tianchen <ni...@alibaba-inc.com>
    
    Closes #4218 from tianchen92/ARROW-5225 and squashes the following commits:
    
    e469c4a8 <tianchen> resolve comments
    7f4a3a23 <tianchen> ARROW-5225: Improve performance of BaseValueVector#getValidityBufferSizeFromCount
---
 java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java | 2 +-
 java/vector/src/main/java/org/apache/arrow/vector/BitVectorHelper.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
index 4e014bb..23654a3 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java
@@ -104,7 +104,7 @@ public abstract class BaseValueVector implements ValueVector {
 
   /* number of bytes for the validity buffer for the given valueCount */
   protected static int getValidityBufferSizeFromCount(final int valueCount) {
-    return (int) Math.ceil(valueCount / 8.0);
+    return (valueCount + 7) >> 3;
   }
 
   /* round up to the next multiple of 8 */
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BitVectorHelper.java b/java/vector/src/main/java/org/apache/arrow/vector/BitVectorHelper.java
index 2fb3f6b..650741c 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BitVectorHelper.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BitVectorHelper.java
@@ -123,7 +123,7 @@ public class BitVectorHelper {
    * @return buffer size
    */
   public static int getValidityBufferSize(int valueCount) {
-    return ((int) Math.ceil(valueCount / 8.0));
+    return (valueCount + 7) >> 3;
   }
 
   /**