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;
}
/**