This is an automated email from the ASF dual-hosted git repository. hui pushed a commit to branch research/encoding-reorder in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit b0ecd7d8bc442dfbf22f35420a1a345b2221147a Author: xjz17 <[email protected]> AuthorDate: Sun Oct 29 14:05:41 2023 +0800 update --- ...{RegerPFloatTest.java => RegerPDoubleTest.java} | 717 ++++----------------- .../iotdb/tsfile/encoding/RegerPFloatTest.java | 54 +- 2 files changed, 160 insertions(+), 611 deletions(-) diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/RegerPFloatTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/RegerPDoubleTest.java similarity index 79% copy from iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/RegerPFloatTest.java copy to iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/RegerPDoubleTest.java index 281c13f0699..bb1fb8b63ee 100644 --- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/RegerPFloatTest.java +++ b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/RegerPDoubleTest.java @@ -18,7 +18,7 @@ import java.util.Stack; import static java.lang.Math.abs; -public class RegerPFloatTest { +public class RegerPDoubleTest { public static int min3(int a, int b, int c) { @@ -253,11 +253,11 @@ public class RegerPFloatTest { return decode_pos; } - public static void float2bytes(float f, int pos_encode, byte[] encode_result) { - int fbit = Float.floatToIntBits(f); - byte[] b = new byte[4]; - for (int i = 0; i < 4; i++) { - b[i] = (byte) (fbit >> (24 - i * 8)); + public static void double2bytes(double f, int pos_encode, byte[] encode_result) { + long fbit = Double.doubleToLongBits(f); + byte[] b = new byte[8]; + for (int i = 0; i < 8; i++) { + b[i] = (byte) (fbit >> (56 - i * 8)); } int len = b.length; @@ -270,29 +270,6 @@ public class RegerPFloatTest { } } - public static float bytes2float(ArrayList<Byte> b, int index) { - int l; - l = b.get(index); - l &= 0xff; - l |= ((long) b.get(index + 1) << 8); - l &= 0xffff; - l |= ((long) b.get(index + 2) << 16); - l &= 0xffffff; - l |= ((long) b.get(index + 3) << 24); - return Float.intBitsToFloat(l); - } - - public static float bytes2float(byte[] b, int index) { - int l; - l = b[index]; - l &= 0xff; - l |= ((long) b[index + 1] << 8); - l &= 0xffff; - l |= ((long) b[index + 2] << 16); - l &= 0xffffff; - l |= ((long) b[index + 3] << 24); - return Float.intBitsToFloat(l); - } public static byte[] int2Bytes(int integer) { @@ -310,23 +287,7 @@ public class RegerPFloatTest { return bytes; } - public static byte[] float2bytes(float f) { - int fbit = Float.floatToIntBits(f); - byte[] b = new byte[4]; - for (int i = 0; i < 4; i++) { - b[i] = (byte) (fbit >> (24 - i * 8)); - } - int len = b.length; - byte[] dest = new byte[len]; - System.arraycopy(b, 0, dest, 0, len); - byte temp; - for (int i = 0; i < len / 2; ++i) { - temp = dest[i]; - dest[i] = dest[len - i - 1]; - dest[len - i - 1] = temp; - } - return dest; - } + public static byte[] bitPacking(ArrayList<ArrayList<Integer>> numbers, int index, int start, int block_num, int bit_width) { block_num = block_num / 8; @@ -479,66 +440,9 @@ public class RegerPFloatTest { result.add(t0); } - public static void terminate( - ArrayList<ArrayList<Integer>> ts_block, ArrayList<Float> coefficient, int p) { - int length = ts_block.size(); - assert length > p; - int size = length - p; - - - double[] param; - try { - OLSMultipleLinearRegression ols1 = new OLSMultipleLinearRegression(); - double[][] X1 = new double[size][p]; - double[] Y1 = new double[size]; - for (int i = 0; i < size; i++) { - X1[i] = new double[p]; - for (int j = 0; j < p; j++) { - X1[i][j] = ts_block.get(i + j).get(0); - } - Y1[i] = ts_block.get(i + p).get(0); - } - ols1.newSampleData(Y1, X1); - param = ols1.estimateRegressionParameters(); //结果的第1项是常数项, 之后依次序为各个特征的系数 - //System.out.println(Arrays.toString(param)); - } catch (Exception e) { - param = new double[p + 1]; - for (int i = 0; i <= p; i++) { - param[i] = 0; - } - } - - - double[] param2; - try { - OLSMultipleLinearRegression ols2 = new OLSMultipleLinearRegression(); - double[][] X2 = new double[size][p]; - double[] Y2 = new double[size]; - for (int i = 0; i < size; i++) { - X2[i] = new double[p]; - for (int j = 0; j < p; j++) { - X2[i][j] = ts_block.get(i + j).get(1); - } - Y2[i] = ts_block.get(i + p).get(1); - } - ols2.newSampleData(Y2, X2); - param2 = ols2.estimateRegressionParameters(); //结果的第1项是常数项, 之后依次序为各个特征的系数 - //System.out.println(Arrays.toString(param2)); - } catch (Exception exception) { - param2 = new double[p + 1]; - for (int i = 0; i <= p; i++) { - param2[i] = 0; - } - } - - for (int i = 0; i <= p; i++) { - coefficient.add((float) param[i]); - coefficient.add((float) param2[i]); - } - } public static void terminate( - int[][] ts_block, float[] coefficient, int p) { + int[][] ts_block, double[] coefficient, int p) { int length = ts_block.length; assert length > p; int size = length - p; @@ -590,8 +494,8 @@ public class RegerPFloatTest { } for (int i = 0; i <= p; i++) { - coefficient[2 * i] = (float) param[i]; - coefficient[2 * i + 1] = (float) param2[i]; + coefficient[2 * i] = param[i]; + coefficient[2 * i + 1] = param2[i]; } } @@ -706,180 +610,6 @@ public class RegerPFloatTest { return isMoveable; } - private static ArrayList<ArrayList<Integer>> getEncodeBitsRegressionP( - ArrayList<ArrayList<Integer>> ts_block, - int block_size, - ArrayList<Integer> raw_length, - ArrayList<Float> coefficient, - int p) { - int timestamp_delta_min = Integer.MAX_VALUE; - int value_delta_min = Integer.MAX_VALUE; - int max_timestamp = Integer.MIN_VALUE; - int max_timestamp_i = -1; - int max_value = Integer.MIN_VALUE; - int max_value_i = -1; - ArrayList<ArrayList<Integer>> ts_block_delta = new ArrayList<>(); - coefficient.clear(); - - terminate(ts_block, coefficient, p); - - ArrayList<Integer> tmp0 = new ArrayList<>(); - tmp0.add(ts_block.get(0).get(0)); - tmp0.add(ts_block.get(0).get(1)); - ts_block_delta.add(tmp0); - // regression residual - for (int j = 1; j < p; j++) { - float epsilon_r = (float) ((float) ts_block.get(j).get(0) - coefficient.get(0)); - float epsilon_v = (float) ((float) ts_block.get(j).get(1) - coefficient.get(1)); - for (int pi = 1; pi <= j; pi++) { - epsilon_r -= (float) (coefficient.get(2 * pi) * (float) ts_block.get(j - pi).get(0)); - epsilon_v -= (float) (coefficient.get(2 * pi + 1) * (float) ts_block.get(j - pi).get(1)); - } - - - ArrayList<Integer> tmp = new ArrayList<>(); - tmp.add((int) epsilon_r); - tmp.add((int) epsilon_v); - ts_block_delta.add(tmp); - } - - // regression residual - for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ts_block.get(j).get(0) - coefficient.get(0); - float epsilon_v = (float) ts_block.get(j).get(1) - coefficient.get(1); - for (int pi = 1; pi <= p; pi++) { - epsilon_r -= coefficient.get(2 * pi) * (float) ts_block.get(j - pi).get(0); - epsilon_v -= coefficient.get(2 * pi + 1) * (float) ts_block.get(j - pi).get(1); - } - - if (epsilon_r < timestamp_delta_min) { - timestamp_delta_min = (int) epsilon_r; - } - if (epsilon_v < value_delta_min) { - value_delta_min = (int) epsilon_v; - } - if (epsilon_r > max_timestamp) { - max_timestamp = (int) epsilon_r; - } - if (epsilon_v > max_value) { - max_value = (int) epsilon_v; - } - ArrayList<Integer> tmp = new ArrayList<>(); - tmp.add((int) epsilon_r); - tmp.add((int) epsilon_v); - ts_block_delta.add(tmp); - } - int length = 0; - for (int j = block_size - 1; j >= p; j--) { - float epsilon_r = ts_block_delta.get(j).get(0) - timestamp_delta_min; - float epsilon_v = ts_block_delta.get(j).get(1) - value_delta_min; - length += getBitWith((int) epsilon_r); - length += getBitWith((int) epsilon_v); - ArrayList<Integer> tmp = new ArrayList<>(); - tmp.add((int) epsilon_r); - tmp.add((int) epsilon_v); - ts_block_delta.set(j, tmp); - } - int max_bit_width_interval = getBitWith(max_timestamp - timestamp_delta_min); - int max_bit_width_value = getBitWith(max_value - value_delta_min); -// int length = (max_bit_width_interval + max_bit_width_value) * (block_size - 1); - raw_length.clear(); - - raw_length.add(length); - raw_length.add(max_bit_width_interval); - raw_length.add(max_bit_width_value); - - raw_length.add(timestamp_delta_min); - raw_length.add(value_delta_min); - - return ts_block_delta; - } - - private static ArrayList<ArrayList<Integer>> getEncodeBitsRegressionPNoTrain( - ArrayList<ArrayList<Integer>> ts_block, - int block_size, - ArrayList<Integer> raw_length, - ArrayList<Float> coefficient, - int p) { - int timestamp_delta_min = Integer.MAX_VALUE; - int value_delta_min = Integer.MAX_VALUE; - int max_timestamp = Integer.MIN_VALUE; - int max_timestamp_i = -1; - int max_value = Integer.MIN_VALUE; - int max_value_i = -1; - ArrayList<ArrayList<Integer>> ts_block_delta = new ArrayList<>(); - - ArrayList<Integer> tmp0 = new ArrayList<>(); - tmp0.add(ts_block.get(0).get(0)); - tmp0.add(ts_block.get(0).get(1)); - ts_block_delta.add(tmp0); - // regression residual - for (int j = 1; j < p; j++) { - float epsilon_r = (float) ((float) ts_block.get(j).get(0) - coefficient.get(0)); - float epsilon_v = (float) ((float) ts_block.get(j).get(1) - coefficient.get(1)); - for (int pi = 1; pi <= j; pi++) { - epsilon_r -= (float) (coefficient.get(2 * pi) * (float) ts_block.get(j - pi).get(0)); - epsilon_v -= (float) (coefficient.get(2 * pi + 1) * (float) ts_block.get(j - pi).get(1)); - } - - - ArrayList<Integer> tmp = new ArrayList<>(); - tmp.add((int) epsilon_r); - tmp.add((int) epsilon_v); - ts_block_delta.add(tmp); - } - - // regression residual - for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ts_block.get(j).get(0) - coefficient.get(0); - float epsilon_v = (float) ts_block.get(j).get(1) - coefficient.get(1); - for (int pi = 1; pi <= p; pi++) { - epsilon_r -= coefficient.get(2 * pi) * (float) ts_block.get(j - pi).get(0); - epsilon_v -= coefficient.get(2 * pi + 1) * (float) ts_block.get(j - pi).get(1); - } - - if (epsilon_r < timestamp_delta_min) { - timestamp_delta_min = (int) epsilon_r; - } - if (epsilon_v < value_delta_min) { - value_delta_min = (int) epsilon_v; - } - if (epsilon_r > max_timestamp) { - max_timestamp = (int) epsilon_r; - } - if (epsilon_v > max_value) { - max_value = (int) epsilon_v; - } - ArrayList<Integer> tmp = new ArrayList<>(); - tmp.add((int) epsilon_r); - tmp.add((int) epsilon_v); - ts_block_delta.add(tmp); - } - int length = 0; - for (int j = block_size - 1; j >= p; j--) { - float epsilon_r = ts_block_delta.get(j).get(0) - timestamp_delta_min; - float epsilon_v = ts_block_delta.get(j).get(1) - value_delta_min; - length += getBitWith((int) epsilon_r); - length += getBitWith((int) epsilon_v); - ArrayList<Integer> tmp = new ArrayList<>(); - tmp.add((int) epsilon_r); - tmp.add((int) epsilon_v); - ts_block_delta.set(j, tmp); - } - int max_bit_width_interval = getBitWith(max_timestamp - timestamp_delta_min); - int max_bit_width_value = getBitWith(max_value - value_delta_min); - - raw_length.clear(); - - raw_length.add(length); - raw_length.add(max_bit_width_interval); - raw_length.add(max_bit_width_value); - - raw_length.add(timestamp_delta_min); - raw_length.add(value_delta_min); - - return ts_block_delta; - } private static int getIstarClose(int alpha, ArrayList<Integer> j_star_list, int[][] new_length_list, int[] raw_length) { int min_i = 0; @@ -905,7 +635,7 @@ public class RegerPFloatTest { int alpha, int block_size, int[] raw_length, - float[] theta, + double[] theta, int p) { int timestamp_delta_min = Integer.MAX_VALUE; int value_delta_min = Integer.MAX_VALUE; @@ -925,11 +655,11 @@ public class RegerPFloatTest { return j_star; } for (int j = 1; j < p; j++) { - float epsilon_r = (float) ((float) ts_block[j][0] - theta[0]); - float epsilon_v = (float) ((float) ts_block[j][1] - theta[1]); + double epsilon_r = ((double) ts_block[j][0] - theta[0]); + double epsilon_v = ((double) ts_block[j][1] - theta[1]); for (int pi = 1; pi <= j; pi++) { - epsilon_r -= (float) (theta[2 * pi] * (float) ts_block[j - pi][0]); - epsilon_v -= (float) (theta[2 * pi + 1] * (float) ts_block[j - pi][1]); + epsilon_r -= (theta[2 * pi] * (double) ts_block[j - pi][0]); + epsilon_v -= (theta[2 * pi + 1] * (double) ts_block[j - pi][1]); } if (epsilon_r < timestamp_delta_min) { @@ -942,12 +672,12 @@ public class RegerPFloatTest { // regression residual for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ts_block[j][0] - theta[0]; - float epsilon_v = (float) ts_block[j][1] - theta[1]; + double epsilon_r = (double) ts_block[j][0] - theta[0]; + double epsilon_v = (double) ts_block[j][1] - theta[1]; // System.out.println("p="+p); for (int pi = 1; pi < p; pi++) { - epsilon_r -= (theta[2 * pi] * (float) ts_block[j - pi][0]); - epsilon_v -= (theta[2 * pi + 1] * (float) ts_block[j - pi][1]); + epsilon_r -= (theta[2 * pi] * (double) ts_block[j - pi][0]); + epsilon_v -= (theta[2 * pi + 1] * (double) ts_block[j - pi][1]); } if (j != alpha && ((int) epsilon_r == max_timestamp || (int) epsilon_v == max_value)) { max_index.add(j); @@ -1198,7 +928,7 @@ public class RegerPFloatTest { int[][] ts_block, int alpha, int j_star, - float[] theta, + double[] theta, int p) { int[][] tmp_ts_block = ts_block.clone(); int block_size = ts_block.length; @@ -1214,28 +944,14 @@ public class RegerPFloatTest { int timestamp_delta_min = Integer.MAX_VALUE; int value_delta_min = Integer.MAX_VALUE; int[][] ts_block_delta = new int[block_size - p][2]; -// for (int j = 1; j < p; j++) { -// float epsilon_r = (float) ((float) ts_block[j][0] - theta[0]); -// float epsilon_v = (float) ((float) ts_block[j][1] - theta[1]); -// for (int pi = 1; pi <= j; pi++) { -// epsilon_r -= (float) (theta[2 * pi] * (float) ts_block[j - pi][0]); -// epsilon_v -= (float) (theta[2 * pi + 1] * (float) ts_block[j - pi][1]); -// } -// -// if (epsilon_r < timestamp_delta_min) { -// timestamp_delta_min = (int) epsilon_r; -// } -// if (epsilon_v < value_delta_min) { -// value_delta_min = (int) epsilon_v; -// } -// } + // regression residual for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ts_block[j][0] - theta[0]; - float epsilon_v = (float) ts_block[j][1] - theta[1]; + double epsilon_r = (double) ts_block[j][0] - theta[0]; + double epsilon_v = (double) ts_block[j][1] - theta[1]; for (int pi = 1; pi < p; pi++) { - epsilon_r -= theta[2 * pi] * (float) ts_block[j - pi][0]; - epsilon_v -= theta[2 * pi + 1] * (float) ts_block[j - pi][1]; + epsilon_r -= theta[2 * pi] * (double) ts_block[j - pi][0]; + epsilon_v -= theta[2 * pi + 1] * (double) ts_block[j - pi][1]; } ts_block_delta[j - p][0] = (int) epsilon_r; ts_block_delta[j - p][1] = (int) epsilon_v; @@ -1262,7 +978,7 @@ public class RegerPFloatTest { int[][] ts_block, int alpha, int j_star, - float[] theta, + double[] theta, int p) { int[][] tmp_ts_block = ts_block.clone(); int block_size = ts_block.length; @@ -1280,11 +996,11 @@ public class RegerPFloatTest { // regression residual for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ts_block[j][0] - theta[0]; - float epsilon_v = (float) ts_block[j][1] - theta[1]; + double epsilon_r = (double) ts_block[j][0] - theta[0]; + double epsilon_v = (double) ts_block[j][1] - theta[1]; for (int pi = 1; pi < p; pi++) { - epsilon_r -= theta[2 * pi] * (float) ts_block[j - pi][0]; - epsilon_v -= theta[2 * pi + 1] * (float) ts_block[j - pi][1]; + epsilon_r -= theta[2 * pi] * (double) ts_block[j - pi][0]; + epsilon_v -= theta[2 * pi + 1] * (double) ts_block[j - pi][1]; } ts_block_delta[j - p][0] = (int) epsilon_r; ts_block_delta[j - p][1] = (int) epsilon_v; @@ -1311,7 +1027,7 @@ public class RegerPFloatTest { int[][] ts_block, int alpha, int j_star, - float[] theta, + double[] theta, int p) { int[][] tmp_ts_block = ts_block.clone(); int block_size = ts_block.length; @@ -1330,11 +1046,11 @@ public class RegerPFloatTest { // regression residual for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ts_block[j][0] - theta[0]; - float epsilon_v = (float) ts_block[j][1] - theta[1]; + double epsilon_r = (double) ts_block[j][0] - theta[0]; + double epsilon_v = (double) ts_block[j][1] - theta[1]; for (int pi = 1; pi < p; pi++) { - epsilon_r -= theta[2 * pi] * (float) ts_block[j - pi][0]; - epsilon_v -= theta[2 * pi + 1] * (float) ts_block[j - pi][1]; + epsilon_r -= theta[2 * pi] * (double) ts_block[j - pi][0]; + epsilon_v -= theta[2 * pi + 1] * (double) ts_block[j - pi][1]; } ts_block_delta[j - p][0] = (int) epsilon_r; ts_block_delta[j - p][1] = (int) epsilon_v; @@ -1361,7 +1077,7 @@ public class RegerPFloatTest { int[][] ts_block, int alpha, int j_star, - float[] theta, + double[] theta, int p) { int[][] tmp_ts_block = ts_block.clone(); int block_size = ts_block.length; @@ -1380,11 +1096,11 @@ public class RegerPFloatTest { // regression residual for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ts_block[j][0] - theta[0]; - float epsilon_v = (float) ts_block[j][1] - theta[1]; + double epsilon_r = (double) ts_block[j][0] - theta[0]; + double epsilon_v = (double) ts_block[j][1] - theta[1]; for (int pi = 1; pi < p; pi++) { - epsilon_r -= theta[2 * pi] * (float) ts_block[j - pi][0]; - epsilon_v -= theta[2 * pi + 1] * (float) ts_block[j - pi][1]; + epsilon_r -= theta[2 * pi] * (double) ts_block[j - pi][0]; + epsilon_v -= theta[2 * pi + 1] * (double) ts_block[j - pi][1]; } ts_block_delta[j - p][0] = (int) epsilon_r; ts_block_delta[j - p][1] = (int) epsilon_v; @@ -1410,7 +1126,7 @@ public class RegerPFloatTest { private static int[] adjustCase5( int[][] ts_block, int alpha, - float[] theta, + double[] theta, int p) { int[][] tmp_ts_block = ts_block.clone(); int block_size = ts_block.length; @@ -1427,11 +1143,11 @@ public class RegerPFloatTest { // regression residual for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ts_block[j][0] - theta[0]; - float epsilon_v = (float) ts_block[j][1] - theta[1]; + double epsilon_r = (double) ts_block[j][0] - theta[0]; + double epsilon_v = (double) ts_block[j][1] - theta[1]; for (int pi = 1; pi < p; pi++) { - epsilon_r -= theta[2 * pi] * (float) ts_block[j - pi][0]; - epsilon_v -= theta[2 * pi + 1] * (float) ts_block[j - pi][1]; + epsilon_r -= theta[2 * pi] * (double) ts_block[j - pi][0]; + epsilon_v -= theta[2 * pi + 1] * (double) ts_block[j - pi][1]; } ts_block_delta[j - p][0] = (int) epsilon_r; ts_block_delta[j - p][1] = (int) epsilon_v; @@ -1472,117 +1188,6 @@ public class RegerPFloatTest { } - public static int getIStarP( - ArrayList<ArrayList<Integer>> ts_block, - int block_size, - ArrayList<Integer> raw_length, - ArrayList<Float> coefficient, - int p) { - int timestamp_delta_min = Integer.MAX_VALUE; - int value_delta_min = Integer.MAX_VALUE; - int timestamp_delta_max = Integer.MIN_VALUE; - int value_delta_max = Integer.MIN_VALUE; - int timestamp_delta_max_index = -1; - int value_delta_max_index = -1; - - int i_star = 0; - - // regression residual - for (int j = 1; j < p; j++) { - float epsilon_r = (float) ((float) ts_block.get(j).get(0) - coefficient.get(0)); - float epsilon_v = (float) ((float) ts_block.get(j).get(1) - coefficient.get(1)); - for (int pi = 1; pi <= j; pi++) { - epsilon_r -= (float) (coefficient.get(2 * pi) * (float) ts_block.get(j - pi).get(0)); - epsilon_v -= (float) (coefficient.get(2 * pi + 1) * (float) ts_block.get(j - pi).get(1)); - } - - if (epsilon_r < timestamp_delta_min) { - timestamp_delta_min = (int) epsilon_r; - } - if (epsilon_v < value_delta_min) { - value_delta_min = (int) epsilon_v; - } - if (epsilon_r > timestamp_delta_max) { - timestamp_delta_max = (int) epsilon_r; - } - if (epsilon_v > value_delta_max) { - value_delta_max = (int) epsilon_v; - } - } - - // regression residual - for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ((float) ts_block.get(j).get(0) - coefficient.get(0)); - float epsilon_v = (float) ((float) ts_block.get(j).get(1) - coefficient.get(1)); - for (int pi = 1; pi <= p; pi++) { - epsilon_r -= (float) (coefficient.get(2 * pi) * (float) ts_block.get(j - pi).get(0)); - epsilon_v -= (float) (coefficient.get(2 * pi + 1) * (float) ts_block.get(j - pi).get(1)); - } - - if (epsilon_r < timestamp_delta_min) { - timestamp_delta_min = (int) epsilon_r; - } - if (epsilon_v < value_delta_min) { - value_delta_min = (int) epsilon_v; - } - if (epsilon_r > timestamp_delta_max) { - timestamp_delta_max = (int) epsilon_r; - } - if (epsilon_v > value_delta_max) { - value_delta_max = (int) epsilon_v; - } - } - timestamp_delta_max -= timestamp_delta_min; - value_delta_max -= value_delta_min; - if (value_delta_max <= timestamp_delta_max) i_star = timestamp_delta_max_index; - else i_star = value_delta_max_index; - return i_star; - } - - public static ArrayList<Byte> encode2Bytes( - ArrayList<ArrayList<Integer>> ts_block_delta, - ArrayList<Integer> raw_length, - ArrayList<Float> coefficient, - ArrayList<Integer> result2, - int p) { - ArrayList<Byte> encoded_result = new ArrayList<>(); - - // encode interval0 and value0 - for (int i = 0; i < p; i++) { - byte[] interval0_byte = int2Bytes(ts_block_delta.get(i).get(0)); - for (byte b : interval0_byte) encoded_result.add(b); - byte[] value0_byte = int2Bytes(ts_block_delta.get(i).get(1)); - for (byte b : value0_byte) encoded_result.add(b); - } - // encode theta - byte[] theta0_r_byte = float2bytes(coefficient.get(0) + (float) raw_length.get(3)); - for (byte b : theta0_r_byte) encoded_result.add(b); - byte[] theta0_v_byte = float2bytes(coefficient.get(1) + (float) raw_length.get(4)); - for (byte b : theta0_v_byte) encoded_result.add(b); - - - for (int i = 2; i < coefficient.size(); i++) { - byte[] theta_byte = float2bytes(coefficient.get(i)); - for (byte b : theta_byte) encoded_result.add(b); - } - - byte[] max_bit_width_interval_byte = bitWidth2Bytes(raw_length.get(1)); - for (byte b : max_bit_width_interval_byte) encoded_result.add(b); - byte[] timestamp_bytes = bitPacking(ts_block_delta, 0, p, ts_block_delta.size() - p, raw_length.get(1)); - for (byte b : timestamp_bytes) encoded_result.add(b); - - - // encode value - byte[] max_bit_width_value_byte = bitWidth2Bytes(raw_length.get(2)); - for (byte b : max_bit_width_value_byte) encoded_result.add(b); - byte[] value_bytes = bitPacking(ts_block_delta, 1, p, ts_block_delta.size() - p, raw_length.get(2)); - for (byte b : value_bytes) encoded_result.add(b); - - byte[] td_common_byte = int2Bytes(result2.get(0)); - for (byte b : td_common_byte) encoded_result.add(b); - - return encoded_result; - } public static ArrayList<Byte> encodeRLEBitWidth2Bytes( ArrayList<ArrayList<Integer>> bit_width_segments) { @@ -1834,7 +1439,7 @@ public class RegerPFloatTest { return pos_encode; } - private static int encodeSegment2Bytes(int[][] delta_segments, int[][] bit_width_segments, int[] raw_length, int segment_size, int p, float[] theta, int pos_encode, byte[] encoded_result) { + private static int encodeSegment2Bytes(int[][] delta_segments, int[][] bit_width_segments, int[] raw_length, int segment_size, int p, double[] theta, int pos_encode, byte[] encoded_result) { int block_size = delta_segments.length; int segment_n = (block_size-p) / segment_size; @@ -1842,17 +1447,15 @@ public class RegerPFloatTest { pos_encode += 4; int2Bytes(delta_segments[0][1], pos_encode, encoded_result); pos_encode += 4; - float2bytes(theta[0] + raw_length[3], pos_encode, encoded_result); + double2bytes(theta[0] + raw_length[3], pos_encode, encoded_result); pos_encode += 4; -// float2bytes(theta[1], pos_encode, encoded_result); -// pos_encode += 4; - float2bytes(theta[1] + raw_length[4], pos_encode, encoded_result); + + double2bytes(theta[1] + raw_length[4], pos_encode, encoded_result); pos_encode += 4; -// float2bytes(theta[3], pos_encode, encoded_result); -// pos_encode += 4; + for (int i = 2; i < theta.length; i++) { - float2bytes(theta[i], pos_encode, encoded_result); + double2bytes(theta[i], pos_encode, encoded_result); pos_encode += 4; } // System.out.println(delta_segments[0][0]); @@ -1878,13 +1481,13 @@ public class RegerPFloatTest { int[][] ts_block, int block_size, int[] raw_length, - float[] theta, + double[] theta, int segment_size, int p) { int timestamp_delta_min = Integer.MAX_VALUE; int value_delta_min = Integer.MAX_VALUE; int[][] ts_block_delta = new int[ts_block.length][2]; -// theta = new float[4]; + terminate(ts_block, theta, p); @@ -1893,22 +1496,22 @@ public class RegerPFloatTest { ts_block_delta[0][1] = ts_block[0][1]; for (int j = 1; j < p; j++) { - float epsilon_r = (float) ((float) ts_block[j][0] - theta[0]); - float epsilon_v = (float) ((float) ts_block[j][1] - theta[1]); + double epsilon_r = ((double) ts_block[j][0] - theta[0]); + double epsilon_v = ((double) ts_block[j][1] - theta[1]); for (int pi = 1; pi <= j; pi++) { - epsilon_r -= (float) (theta[2 * pi] * (float) ts_block[j - pi][0]); - epsilon_v -= (float) (theta[2 * pi + 1] * (float) ts_block[j - pi][1]); + epsilon_r -= (theta[2 * pi] * (double) ts_block[j - pi][0]); + epsilon_v -= (theta[2 * pi + 1] * (double) ts_block[j - pi][1]); } ts_block_delta[j][0] = (int) epsilon_r; ts_block_delta[j][1] = (int) epsilon_v; } for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ts_block[j][0] - theta[0]; - float epsilon_v = (float) ts_block[j][1] - theta[1]; + double epsilon_r = (double) ts_block[j][0] - theta[0]; + double epsilon_v = (double) ts_block[j][1] - theta[1]; for (int pi = 1; pi < p; pi++) { - epsilon_r -= theta[2 * pi] * (float) ts_block[j - pi][0]; - epsilon_v -= theta[2 * pi + 1] * (float) ts_block[j - pi][1]; + epsilon_r -= theta[2 * pi] * (double) ts_block[j - pi][0]; + epsilon_v -= theta[2 * pi + 1] * (double) ts_block[j - pi][1]; } if (epsilon_r < timestamp_delta_min) { @@ -1964,34 +1567,33 @@ public class RegerPFloatTest { int[][] ts_block, int block_size, int[] raw_length, - float[] theta, + double[] theta, int segment_size, int p) { int timestamp_delta_min = Integer.MAX_VALUE; int value_delta_min = Integer.MAX_VALUE; int[][] ts_block_delta = new int[ts_block.length][2]; -// theta = new float[4]; ts_block_delta[0][0] = ts_block[0][0]; ts_block_delta[0][1] = ts_block[0][1]; for (int j = 1; j < p; j++) { - float epsilon_r = (float) ((float) ts_block[j][0] - theta[0]); - float epsilon_v = (float) ((float) ts_block[j][1] - theta[1]); + double epsilon_r = ((double) ts_block[j][0] - theta[0]); + double epsilon_v = ((double) ts_block[j][1] - theta[1]); for (int pi = 1; pi <= j; pi++) { - epsilon_r -= (float) (theta[2 * pi] * (float) ts_block[j - pi][0]); - epsilon_v -= (float) (theta[2 * pi + 1] * (float) ts_block[j - pi][1]); + epsilon_r -= (theta[2 * pi] * (double) ts_block[j - pi][0]); + epsilon_v -= (theta[2 * pi + 1] * (double) ts_block[j - pi][1]); } ts_block_delta[j][0] = (int) epsilon_r; ts_block_delta[j][1] = (int) epsilon_v; } for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ts_block[j][0] - theta[0]; - float epsilon_v = (float) ts_block[j][1] - theta[1]; + double epsilon_r = (double) ts_block[j][0] - theta[0]; + double epsilon_v = (double) ts_block[j][1] - theta[1]; for (int pi = 1; pi < p; pi++) { - epsilon_r -= theta[2 * pi] * (float) ts_block[j - pi][0]; - epsilon_v -= theta[2 * pi + 1] * (float) ts_block[j - pi][1]; + epsilon_r -= theta[2 * pi] * (double) ts_block[j - pi][0]; + epsilon_v -= theta[2 * pi + 1] * (double) ts_block[j - pi][1]; } if (epsilon_r < timestamp_delta_min) { @@ -2037,7 +1639,7 @@ public class RegerPFloatTest { return ts_block_delta; } - private static int numberOfEncodeSegment2Bytes(int[][] delta_segments, int[][] bit_width_segments, int[] raw_length, int segment_size, int p, float[] theta) { + private static int numberOfEncodeSegment2Bytes(int[][] delta_segments, int[][] bit_width_segments, int[] raw_length, int segment_size, int p, double[] theta) { ArrayList<Byte> encoded_result = new ArrayList<>(); int block_size = delta_segments.length; int segment_n = (block_size-p) / segment_size; @@ -2058,7 +1660,7 @@ public class RegerPFloatTest { } public static int[] getIStar( - int[][] ts_block, ArrayList<Integer> min_index, int block_size, int index, float[] theta, int p, int k) { + int[][] ts_block, ArrayList<Integer> min_index, int block_size, int index, double[] theta, int p, int k) { int timestamp_delta_min = Integer.MAX_VALUE; int value_delta_min = Integer.MAX_VALUE; @@ -2070,11 +1672,11 @@ public class RegerPFloatTest { // regression residual for (int j = 1; j < p; j++) { - float epsilon_r = (float) ((float) ts_block[j][0] - theta[0]); - float epsilon_v = (float) ((float) ts_block[j][1] - theta[1]); + double epsilon_r = ((double) ts_block[j][0] - theta[0]); + double epsilon_v = ((double) ts_block[j][1] - theta[1]); for (int pi = 1; pi <= j; pi++) { - epsilon_r -= (float) (theta[2 * pi] * (float) ts_block[j - pi][0]); - epsilon_v -= (float) (theta[2 * pi + 1] * (float) ts_block[j - pi][1]); + epsilon_r -= (theta[2 * pi] * (double) ts_block[j - pi][0]); + epsilon_v -= (theta[2 * pi + 1] * (double) ts_block[j - pi][1]); } if (epsilon_r < timestamp_delta_min) { @@ -2093,12 +1695,12 @@ public class RegerPFloatTest { } } for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ((float) ts_block[j][0] - theta[0]); - float epsilon_v = (float) ((float) ts_block[j][1] - theta[1]); + double epsilon_r = ((double) ts_block[j][0] - theta[0]); + double epsilon_v = ((double) ts_block[j][1] - theta[1]); for (int pi = 1; pi < p; pi++) { - epsilon_r -= (float) (theta[2 * pi] * (float) ts_block[j - pi][0]); - epsilon_v -= (float) (theta[2 * pi + 1] * (float) ts_block[j - pi][1]); + epsilon_r -= (theta[2 * pi] * (double) ts_block[j - pi][0]); + epsilon_v -= (theta[2 * pi + 1] * (double) ts_block[j - pi][1]); } if (epsilon_r < timestamp_delta_min) { timestamp_delta_min = (int) epsilon_r; @@ -2137,7 +1739,7 @@ public class RegerPFloatTest { int[][] ts_block, ArrayList<Integer> min_index, int block_size, - float[] theta, + double[] theta, int p, int k) { int timestamp_delta_min = Integer.MAX_VALUE; @@ -2152,11 +1754,11 @@ public class RegerPFloatTest { int[][] ts_block_delta_value = new int[block_size - 1][2]; // regression residual for (int j = 1; j < p; j++) { - float epsilon_r = (float) ((float) ts_block[j][0] - theta[0]); - float epsilon_v = (float) ((float) ts_block[j][1] - theta[1]); + double epsilon_r = ((double) ts_block[j][0] - theta[0]); + double epsilon_v = ((double) ts_block[j][1] - theta[1]); for (int pi = 1; pi <= j; pi++) { - epsilon_r -= (float) (theta[2 * pi] * (float) ts_block[j - pi][0]); - epsilon_v -= (float) (theta[2 * pi + 1] * (float) ts_block[j - pi][1]); + epsilon_r -= (double) (theta[2 * pi] * (double) ts_block[j - pi][0]); + epsilon_v -= (double) (theta[2 * pi + 1] * (double) ts_block[j - pi][1]); } if (epsilon_r < timestamp_delta_min) { @@ -2172,12 +1774,12 @@ public class RegerPFloatTest { ts_block_delta_value[j - 1][1] = (int) epsilon_v; } for (int j = p; j < block_size; j++) { - float epsilon_r = (float) ((float) ts_block[j][0] - theta[0]); - float epsilon_v = (float) ((float) ts_block[j][1] - theta[1]); + double epsilon_r = ((double) ts_block[j][0] - theta[0]); + double epsilon_v = ((double) ts_block[j][1] - theta[1]); for (int pi = 1; pi <= p; pi++) { - epsilon_r -= (float) (theta[2 * pi] * (float) ts_block[j - pi][0]); - epsilon_v -= (float) (theta[2 * pi + 1] * (float) ts_block[j - pi][1]); + epsilon_r -= (theta[2 * pi] * (double) ts_block[j - pi][0]); + epsilon_v -= (theta[2 * pi + 1] * (double) ts_block[j - pi][1]); } if (epsilon_r < timestamp_delta_min) { timestamp_delta_min = (int) epsilon_r; @@ -2246,7 +1848,7 @@ public class RegerPFloatTest { // raw-order int[] raw_length = new int[5]; // length,max_bit_width_interval,max_bit_width_value,max_bit_width_deviation - float[] theta = new float[2 * p + 2]; + double[] theta = new double[2 * p + 2]; int[][] ts_block_delta = getEncodeBitsRegression(ts_block, block_size, raw_length, theta, segment_size, p); int[][] bit_width_segments_partition = segmentBitPacking(ts_block_delta, block_size, segment_size); raw_length[0] = numberOfEncodeSegment2Bytes(ts_block_delta, bit_width_segments_partition, raw_length, segment_size, p, theta); @@ -2258,7 +1860,7 @@ public class RegerPFloatTest { }); // quickSort(ts_block, 0, 0, block_size - 1); int[] time_length = new int[5];// length,max_bit_width_interval,max_bit_width_value,max_bit_width_deviation - float[] theta_time = new float[2 * p + 2]; + double[] theta_time = new double[2 * p + 2]; int[][] ts_block_delta_time = getEncodeBitsRegression(ts_block, block_size, time_length, theta_time, segment_size, p); int[][] bit_width_segments_time = segmentBitPacking(ts_block_delta_time, block_size, segment_size); time_length[0] = numberOfEncodeSegment2Bytes(ts_block_delta_time, bit_width_segments_time, time_length, segment_size,p, theta_time); @@ -2273,7 +1875,7 @@ public class RegerPFloatTest { // quickSort(ts_block, 1, 0, block_size - 1); int[] reorder_length = new int[5]; - float[] theta_reorder = new float[2 * p + 2]; + double[] theta_reorder = new double[2 * p + 2]; int[][] ts_block_delta_reorder = getEncodeBitsRegression(ts_block, block_size, reorder_length, theta_reorder, segment_size, p); int[][] bit_width_segments_value = segmentBitPacking(ts_block_delta_reorder, block_size, segment_size); reorder_length[0] = numberOfEncodeSegment2Bytes(ts_block_delta_reorder, bit_width_segments_value, reorder_length, segment_size, p, theta_reorder); @@ -2441,11 +2043,11 @@ public class RegerPFloatTest { // System.out.println(Arrays.deepToString(ts_block)); int[] reorder_length = new int[5]; - float[] theta_reorder = new float[2*p+2]; + double[] theta_reorder = new double[2*p+2]; int[] time_length = new int[5];// length,max_bit_width_interval,max_bit_width_value,max_bit_width_deviation - float[] theta_time = new float[2*p+2]; + double[] theta_time = new double[2*p+2]; int[] raw_length = new int[5]; // length,max_bit_width_interval,max_bit_width_value,max_bit_width_deviation - float[] theta = new float[2*p+2]; + double[] theta = new double[2*p+2]; int[][] ts_block_delta_reorder = new int[block_size][2]; int[][] bit_width_segments_value; int[][] ts_block_delta_time = new int[block_size][2]; @@ -2766,20 +2368,20 @@ public class RegerPFloatTest { } int[] raw_length = new int[5]; - float[] theta = new float[2*p+2]; + double[] theta = new double[2*p+2]; int[][] ts_block_delta = getEncodeBitsRegression(ts_block_time, block_size, raw_length, theta, segment_size, p); int[][] bit_width_segments = segmentBitPacking(ts_block_delta, block_size, segment_size); length_time += numberOfEncodeSegment2Bytes(ts_block_delta, bit_width_segments, raw_length, segment_size, p, theta); int[] raw_length_value = new int[5]; - float[] theta_value = new float[2*p+2]; + double[] theta_value = new double[2*p+2]; int[][] ts_block_delta_value = getEncodeBitsRegression(ts_block_value, block_size, raw_length_value, theta_value, segment_size, p); int[][] bit_width_segments_value = segmentBitPacking(ts_block_delta_value, block_size, segment_size); length_value += numberOfEncodeSegment2Bytes(ts_block_delta_value, bit_width_segments_value, raw_length_value, segment_size, p, theta_value); int[] raw_length_partition = new int[5]; - float[] theta_partition = new float[2*p+2]; + double[] theta_partition = new double[2*p+2]; int[][] ts_block_delta_partition = getEncodeBitsRegression(ts_block_partition, block_size, raw_length_partition, theta_partition, segment_size, p); int[][] bit_width_segments_partition = segmentBitPacking(ts_block_delta_partition, block_size, segment_size); length_partition += numberOfEncodeSegment2Bytes(ts_block_delta_partition, bit_width_segments_partition, raw_length_partition, segment_size, p, theta_partition); @@ -2836,52 +2438,6 @@ public class RegerPFloatTest { return encode_pos; } - private static ArrayList<Byte> encodeSegment2Bytes(ArrayList<ArrayList<Integer>> delta_segments, - ArrayList<ArrayList<Integer>> bit_width_segments, - ArrayList<Integer> raw_length, int segment_size, ArrayList<Float> coefficient, ArrayList<Integer> result2, int p) { - ArrayList<Byte> encoded_result = new ArrayList<>(); - int block_size = delta_segments.size(); - int segment_n = (block_size - p) / segment_size; - // encode theta - - - // encode interval0 and value0 - for (int i = 0; i < p; i++) { - byte[] interval0_byte = int2Bytes(delta_segments.get(i).get(0)); - for (byte b : interval0_byte) encoded_result.add(b); - byte[] value0_byte = int2Bytes(delta_segments.get(i).get(1)); - for (byte b : value0_byte) encoded_result.add(b); - } - - // encode theta - byte[] theta0_r_byte = float2bytes(coefficient.get(0) + (float) raw_length.get(3)); - for (byte b : theta0_r_byte) encoded_result.add(b); - byte[] theta0_v_byte = float2bytes(coefficient.get(1) + (float) raw_length.get(4)); - for (byte b : theta0_v_byte) encoded_result.add(b); - - - for (int i = 2; i < coefficient.size(); i++) { - byte[] theta_byte = float2bytes(coefficient.get(i)); - for (byte b : theta_byte) encoded_result.add(b); - } - - encoded_result.addAll(encodeRLEBitWidth2Bytes(bit_width_segments)); - for (int segment_i = 0; segment_i < segment_n; segment_i++) { - int bit_width_time = bit_width_segments.get(segment_i).get(0); - int bit_width_value = bit_width_segments.get(segment_i).get(1); - - byte[] timestamp_bytes = bitPacking(delta_segments, 0, segment_i * segment_size + 1, segment_size, bit_width_time); - for (byte b : timestamp_bytes) encoded_result.add(b); - byte[] value_bytes = bitPacking(delta_segments, 1, segment_i * segment_size + 1, segment_size, bit_width_value); - for (byte b : value_bytes) encoded_result.add(b); - } - - byte[] td_common_byte = int2Bytes(result2.get(0)); - for (byte b : td_common_byte) encoded_result.add(b); - - return encoded_result; - } - public static double bytes2Double(ArrayList<Byte> encoded, int start, int num) { if (num > 8) { @@ -2895,17 +2451,6 @@ public class RegerPFloatTest { return Double.longBitsToDouble(value); } - public static float byte2float2(ArrayList<Byte> b, int index) { - int l; - l = b.get(index); - l &= 0xff; - l |= ((long) b.get(index + 1) << 8); - l &= 0xffff; - l |= ((long) b.get(index + 2) << 16); - l &= 0xffffff; - l |= ((long) b.get(index + 3) << 24); - return Float.intBitsToFloat(l); - } public static int bytes2Integer(ArrayList<Byte> encoded, int start, int num) { int value = 0; @@ -2941,10 +2486,10 @@ public class RegerPFloatTest { } @Test - public void REGERPFloat() throws IOException { + public void REGERPDouble() throws IOException { String parent_dir = "/Users/xiaojinzhao/Documents/GitHub/iotdb/iotdb-core/tsfile/src/test/resources/"; - String output_parent_dir = "/Users/xiaojinzhao/Documents/GitHub/encoding-reorder/compression_ratio/p_float/"; + String output_parent_dir = "/Users/xiaojinzhao/Documents/GitHub/encoding-reorder/compression_ratio/p_double/"; String input_parent_dir = parent_dir + "trans_data/"; ArrayList<String> input_path_list = new ArrayList<>(); @@ -2998,29 +2543,30 @@ public class RegerPFloatTest { dataset_block_size.add(1024); } - output_path_list.add(output_parent_dir + "\\CS-Sensors_ratio.csv"); // 0 + output_path_list.add(output_parent_dir + "/CS-Sensors_ratio.csv"); // 0 // dataset_block_size.add(1024); - output_path_list.add(output_parent_dir + "\\Metro-Traffic_ratio.csv");// 1 + + output_path_list.add(output_parent_dir + "/Metro-Traffic_ratio.csv");// 1 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\USGS-Earthquakes_ratio.csv");// 2 + output_path_list.add(output_parent_dir + "/USGS-Earthquakes_ratio.csv");// 2 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\YZ-Electricity_ratio.csv"); // 3 -// dataset_block_size.add(1024); - output_path_list.add(output_parent_dir + "\\GW-Magnetic_ratio.csv"); //4 + output_path_list.add(output_parent_dir + "/YZ-Electricity_ratio.csv"); // 3 +// dataset_block_size.add(256); + output_path_list.add(output_parent_dir + "/GW-Magnetic_ratio.csv"); //4 // dataset_block_size.add(128); - output_path_list.add(output_parent_dir + "\\TY-Fuel_ratio.csv");//5 + output_path_list.add(output_parent_dir + "/TY-Fuel_ratio.csv");//5 // dataset_block_size.add(64); - output_path_list.add(output_parent_dir + "\\Cyber-Vehicle_ratio.csv"); //6 + output_path_list.add(output_parent_dir + "/Cyber-Vehicle_ratio.csv"); //6 // dataset_block_size.add(128); - output_path_list.add(output_parent_dir + "\\Vehicle-Charge_ratio.csv");//7 + output_path_list.add(output_parent_dir + "/Vehicle-Charge_ratio.csv");//7 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\Nifty-Stocks_ratio.csv");//8 + output_path_list.add(output_parent_dir + "/Nifty-Stocks_ratio.csv");//8 // dataset_block_size.add(256); - output_path_list.add(output_parent_dir + "\\TH-Climate_ratio.csv");//9 + output_path_list.add(output_parent_dir + "/TH-Climate_ratio.csv");//9 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\TY-Transport_ratio.csv");//10 + output_path_list.add(output_parent_dir + "/TY-Transport_ratio.csv");//10 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\EPM-Education_ratio.csv");//11 + output_path_list.add(output_parent_dir + "/EPM-Education_ratio.csv");//11 // dataset_block_size.add(512); for (int file_i = 0; file_i < input_path_list.size(); file_i++) { @@ -3109,7 +2655,7 @@ public class RegerPFloatTest { String[] record = { f.toString(), - "REGER-32-FLOAT", + "REGER-32-DOUBLE", String.valueOf(encodeTime), String.valueOf(decodeTime), String.valueOf(data.size()), @@ -3127,10 +2673,10 @@ public class RegerPFloatTest { } } @Test - public void REGERPFloatVaryP() throws IOException { + public void REGERPDoubleVaryP() throws IOException { String parent_dir = "/Users/xiaojinzhao/Documents/GitHub/iotdb/iotdb-core/tsfile/src/test/resources/"; - String output_parent_dir = "/Users/xiaojinzhao/Documents/GitHub/encoding-reorder/compression_ratio/p_float_vary_p/"; + String output_parent_dir = "/Users/xiaojinzhao/Documents/GitHub/encoding-reorder/compression_ratio/p_double_vary_p/"; String input_parent_dir = parent_dir + "trans_data/"; ArrayList<String> input_path_list = new ArrayList<>(); @@ -3184,29 +2730,30 @@ public class RegerPFloatTest { dataset_block_size.add(1024); } - output_path_list.add(output_parent_dir + "\\CS-Sensors_ratio.csv"); // 0 + output_path_list.add(output_parent_dir + "/CS-Sensors_ratio.csv"); // 0 // dataset_block_size.add(1024); - output_path_list.add(output_parent_dir + "\\Metro-Traffic_ratio.csv");// 1 + + output_path_list.add(output_parent_dir + "/Metro-Traffic_ratio.csv");// 1 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\USGS-Earthquakes_ratio.csv");// 2 + output_path_list.add(output_parent_dir + "/USGS-Earthquakes_ratio.csv");// 2 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\YZ-Electricity_ratio.csv"); // 3 -// dataset_block_size.add(1024); - output_path_list.add(output_parent_dir + "\\GW-Magnetic_ratio.csv"); //4 + output_path_list.add(output_parent_dir + "/YZ-Electricity_ratio.csv"); // 3 +// dataset_block_size.add(256); + output_path_list.add(output_parent_dir + "/GW-Magnetic_ratio.csv"); //4 // dataset_block_size.add(128); - output_path_list.add(output_parent_dir + "\\TY-Fuel_ratio.csv");//5 + output_path_list.add(output_parent_dir + "/TY-Fuel_ratio.csv");//5 // dataset_block_size.add(64); - output_path_list.add(output_parent_dir + "\\Cyber-Vehicle_ratio.csv"); //6 + output_path_list.add(output_parent_dir + "/Cyber-Vehicle_ratio.csv"); //6 // dataset_block_size.add(128); - output_path_list.add(output_parent_dir + "\\Vehicle-Charge_ratio.csv");//7 + output_path_list.add(output_parent_dir + "/Vehicle-Charge_ratio.csv");//7 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\Nifty-Stocks_ratio.csv");//8 + output_path_list.add(output_parent_dir + "/Nifty-Stocks_ratio.csv");//8 // dataset_block_size.add(256); - output_path_list.add(output_parent_dir + "\\TH-Climate_ratio.csv");//9 + output_path_list.add(output_parent_dir + "/TH-Climate_ratio.csv");//9 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\TY-Transport_ratio.csv");//10 + output_path_list.add(output_parent_dir + "/TY-Transport_ratio.csv");//10 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\EPM-Education_ratio.csv");//11 + output_path_list.add(output_parent_dir + "/EPM-Education_ratio.csv");//11 // dataset_block_size.add(512); for (int file_i = 0; file_i < input_path_list.size(); file_i++) { @@ -3294,7 +2841,7 @@ public class RegerPFloatTest { String[] record = { f.toString(), - "REGER-32-FLOAT", + "REGER-32-DOUBLE", String.valueOf(encodeTime), String.valueOf(decodeTime), String.valueOf(data.size()), diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/RegerPFloatTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/RegerPFloatTest.java index 281c13f0699..cc8c6799b50 100644 --- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/RegerPFloatTest.java +++ b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/RegerPFloatTest.java @@ -2998,29 +2998,30 @@ public class RegerPFloatTest { dataset_block_size.add(1024); } - output_path_list.add(output_parent_dir + "\\CS-Sensors_ratio.csv"); // 0 + output_path_list.add(output_parent_dir + "/CS-Sensors_ratio.csv"); // 0 // dataset_block_size.add(1024); - output_path_list.add(output_parent_dir + "\\Metro-Traffic_ratio.csv");// 1 + + output_path_list.add(output_parent_dir + "/Metro-Traffic_ratio.csv");// 1 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\USGS-Earthquakes_ratio.csv");// 2 + output_path_list.add(output_parent_dir + "/USGS-Earthquakes_ratio.csv");// 2 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\YZ-Electricity_ratio.csv"); // 3 -// dataset_block_size.add(1024); - output_path_list.add(output_parent_dir + "\\GW-Magnetic_ratio.csv"); //4 + output_path_list.add(output_parent_dir + "/YZ-Electricity_ratio.csv"); // 3 +// dataset_block_size.add(256); + output_path_list.add(output_parent_dir + "/GW-Magnetic_ratio.csv"); //4 // dataset_block_size.add(128); - output_path_list.add(output_parent_dir + "\\TY-Fuel_ratio.csv");//5 + output_path_list.add(output_parent_dir + "/TY-Fuel_ratio.csv");//5 // dataset_block_size.add(64); - output_path_list.add(output_parent_dir + "\\Cyber-Vehicle_ratio.csv"); //6 + output_path_list.add(output_parent_dir + "/Cyber-Vehicle_ratio.csv"); //6 // dataset_block_size.add(128); - output_path_list.add(output_parent_dir + "\\Vehicle-Charge_ratio.csv");//7 + output_path_list.add(output_parent_dir + "/Vehicle-Charge_ratio.csv");//7 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\Nifty-Stocks_ratio.csv");//8 + output_path_list.add(output_parent_dir + "/Nifty-Stocks_ratio.csv");//8 // dataset_block_size.add(256); - output_path_list.add(output_parent_dir + "\\TH-Climate_ratio.csv");//9 + output_path_list.add(output_parent_dir + "/TH-Climate_ratio.csv");//9 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\TY-Transport_ratio.csv");//10 + output_path_list.add(output_parent_dir + "/TY-Transport_ratio.csv");//10 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\EPM-Education_ratio.csv");//11 + output_path_list.add(output_parent_dir + "/EPM-Education_ratio.csv");//11 // dataset_block_size.add(512); for (int file_i = 0; file_i < input_path_list.size(); file_i++) { @@ -3184,29 +3185,30 @@ public class RegerPFloatTest { dataset_block_size.add(1024); } - output_path_list.add(output_parent_dir + "\\CS-Sensors_ratio.csv"); // 0 + output_path_list.add(output_parent_dir + "/CS-Sensors_ratio.csv"); // 0 // dataset_block_size.add(1024); - output_path_list.add(output_parent_dir + "\\Metro-Traffic_ratio.csv");// 1 + + output_path_list.add(output_parent_dir + "/Metro-Traffic_ratio.csv");// 1 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\USGS-Earthquakes_ratio.csv");// 2 + output_path_list.add(output_parent_dir + "/USGS-Earthquakes_ratio.csv");// 2 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\YZ-Electricity_ratio.csv"); // 3 -// dataset_block_size.add(1024); - output_path_list.add(output_parent_dir + "\\GW-Magnetic_ratio.csv"); //4 + output_path_list.add(output_parent_dir + "/YZ-Electricity_ratio.csv"); // 3 +// dataset_block_size.add(256); + output_path_list.add(output_parent_dir + "/GW-Magnetic_ratio.csv"); //4 // dataset_block_size.add(128); - output_path_list.add(output_parent_dir + "\\TY-Fuel_ratio.csv");//5 + output_path_list.add(output_parent_dir + "/TY-Fuel_ratio.csv");//5 // dataset_block_size.add(64); - output_path_list.add(output_parent_dir + "\\Cyber-Vehicle_ratio.csv"); //6 + output_path_list.add(output_parent_dir + "/Cyber-Vehicle_ratio.csv"); //6 // dataset_block_size.add(128); - output_path_list.add(output_parent_dir + "\\Vehicle-Charge_ratio.csv");//7 + output_path_list.add(output_parent_dir + "/Vehicle-Charge_ratio.csv");//7 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\Nifty-Stocks_ratio.csv");//8 + output_path_list.add(output_parent_dir + "/Nifty-Stocks_ratio.csv");//8 // dataset_block_size.add(256); - output_path_list.add(output_parent_dir + "\\TH-Climate_ratio.csv");//9 + output_path_list.add(output_parent_dir + "/TH-Climate_ratio.csv");//9 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\TY-Transport_ratio.csv");//10 + output_path_list.add(output_parent_dir + "/TY-Transport_ratio.csv");//10 // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "\\EPM-Education_ratio.csv");//11 + output_path_list.add(output_parent_dir + "/EPM-Education_ratio.csv");//11 // dataset_block_size.add(512); for (int file_i = 0; file_i < input_path_list.size(); file_i++) {
