From d78767dad70b50e102372234d224dd206e88a196 Mon Sep 17 00:00:00 2001 From: Zhenyu Luo Date: Wed, 27 Aug 2025 10:35:47 +0800 Subject: [PATCH] perf: Optimize aligned object memory size calculation (#577) * Optimize aligned object memory size calculation * spotless --- .../java/org/apache/tsfile/utils/RamUsageEstimator.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java b/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java index 404af5109..af7a8cff4 100644 --- a/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java +++ b/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java @@ -82,6 +82,8 @@ private RamUsageEstimator() {} */ public static final int NUM_BYTES_OBJECT_ALIGNMENT; + private static final int ALIGN_MASK; + /** * Approximate memory usage that we assign to all unknown queries - this maps roughly to a * BooleanQuery with a couple term clauses. @@ -180,6 +182,8 @@ private RamUsageEstimator() {} NUM_BYTES_ARRAY_HEADER = NUM_BYTES_OBJECT_HEADER + Integer.BYTES; } + ALIGN_MASK = NUM_BYTES_OBJECT_ALIGNMENT - 1; + // get min/max value of cached Long class instances: long longCacheMinValue = 0; while (longCacheMinValue > Long.MIN_VALUE @@ -209,8 +213,7 @@ private RamUsageEstimator() {} /** Aligns an object size to be the next multiple of {@link #NUM_BYTES_OBJECT_ALIGNMENT}. */ public static long alignObjectSize(long size) { - size += NUM_BYTES_OBJECT_ALIGNMENT - 1L; - return size - (size % NUM_BYTES_OBJECT_ALIGNMENT); + return (size + ALIGN_MASK) & ~ALIGN_MASK; } /**