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

leirui pushed a commit to branch research/M4-visualization
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit c50b731e0f99aeed3bd17fdbfc80d1c0de79a806
Author: Lei Rui <[email protected]>
AuthorDate: Mon Oct 10 16:25:37 2022 +0800

    width 8 multiple faster, otherwise no
---
 .../iotdb/session/MyBasicOperationTest3.java       |  2 +-
 .../session/MyRealDataTest1_WriteAndQuery.java     |  2 +-
 .../org/apache/iotdb/tsfile/utils/BytesUtils.java  | 30 +++++++++++++++++++---
 3 files changed, 29 insertions(+), 5 deletions(-)

diff --git 
a/session/src/test/java/org/apache/iotdb/session/MyBasicOperationTest3.java 
b/session/src/test/java/org/apache/iotdb/session/MyBasicOperationTest3.java
index bcbceb4d61..f03635041f 100644
--- a/session/src/test/java/org/apache/iotdb/session/MyBasicOperationTest3.java
+++ b/session/src/test/java/org/apache/iotdb/session/MyBasicOperationTest3.java
@@ -15,7 +15,7 @@ public class MyBasicOperationTest3 {
 
     int repeat = 1000000;
     int packNum = 128;
-    int packWidth = 13;
+    int packWidth = 2;
     DescriptiveStatistics op1 = new DescriptiveStatistics();
     DescriptiveStatistics op2 = new DescriptiveStatistics();
     for (int k = 0; k < repeat; k++) {
diff --git 
a/session/src/test/java/org/apache/iotdb/session/MyRealDataTest1_WriteAndQuery.java
 
b/session/src/test/java/org/apache/iotdb/session/MyRealDataTest1_WriteAndQuery.java
index 6024cd118a..10f8235500 100644
--- 
a/session/src/test/java/org/apache/iotdb/session/MyRealDataTest1_WriteAndQuery.java
+++ 
b/session/src/test/java/org/apache/iotdb/session/MyRealDataTest1_WriteAndQuery.java
@@ -73,7 +73,7 @@ public class MyRealDataTest1_WriteAndQuery {
     private static int valueIdx = 1; // 值idx,从0开始
     private static int w = 2;
     private static long range = total_time_length;
-    private static boolean enableRegularityTimeDecode = false;
+    private static boolean enableRegularityTimeDecode = true;
     private static long regularTimeInterval = 511996L;
     private static String approach = "mac"; // 选择查询执行算法: 1: MAC, 2: MOC, 3: CPV
 
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BytesUtils.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BytesUtils.java
index 94e9d83548..95cb627a68 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BytesUtils.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BytesUtils.java
@@ -588,10 +588,34 @@ public class BytesUtils {
       } else {
         // put bits in the byte from the global position pos to pos+width-1 
into the long value
         TsFileConstant.bytesToLong_byteNum1_smallByte++;
-        int mask = (int) Math.pow(2, 8 - width) - 1; // TODO consider if this 
to make static
-        mask = (~mask & 0xff) >> startPosInByte;
-//        return (result[startByte] & 0xff & mask) >> (7 - endPosInByte);
+        // TODO precompute and reuse masks
+        int mask = 0;
+        if (width == 2) {
+          System.out.println("[RL]2");
+          switch (startPosInByte) {
+            case 0:
+              mask = 0b11000000;
+              break;
+            case 2:
+              mask = 0b00110000;
+              break;
+            case 4:
+              mask = 0b00001100;
+              break;
+            case 6:
+              mask = 0b00000011;
+              break;
+            default:
+              System.out.println("wrong!!!");
+          }
+        } else {
+          System.out.println("[RL]not 2");
+          mask = (int) Math.pow(2, 8 - width) - 1; // TODO consider if this to 
make static
+          mask = (~mask & 0xff) >> startPosInByte;
+        }
+
         return (result[startByte] & mask) >> (7 - endPosInByte);
+        // here mask is positive so no need &0xff
       }
     }
     // TODO if across two bytes

Reply via email to