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
