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 253d02f1e23edbba3161016769814bd2f1f83242 Author: xjz17 <[email protected]> AuthorDate: Mon Dec 4 21:37:41 2023 +0800 Update RegerPFloatTest.java --- .../iotdb/tsfile/encoding/RegerPFloatTest.java | 957 ++------------------- 1 file changed, 58 insertions(+), 899 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/RegerPFloatTest.java index 14edb0a50b2..65944c63eee 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 @@ -2,8 +2,6 @@ package org.apache.iotdb.tsfile.encoding; import com.csvreader.CsvReader; import com.csvreader.CsvWriter; -import org.apache.commons.math3.stat.descriptive.moment.StandardDeviation; -import org.apache.commons.math3.stat.regression.OLSMultipleLinearRegression; import org.apache.commons.math3.linear.*; import org.junit.Test; @@ -79,75 +77,6 @@ public class RegerPFloatTest { return newArray; } - public static int bytes2Integer(byte[] encoded, int start, int num) { - int value = 0; - if (num > 4) { - System.out.println("bytes2Integer error"); - return 0; - } - for (int i = 0; i < num; i++) { - value <<= 8; - int b = encoded[i + start] & 0xFF; - value |= b; - } - return value; - } - - private static int byte2Integer(byte[] encoded, int decode_pos) { - int value = 0; - int b = encoded[decode_pos] & 0xFF; - value |= b; - if (value == 0) return 256; - return value % 256; - } - - public static void pack8Values( - ArrayList<Integer> values, int offset, int width, int encode_pos, byte[] encoded_result) { - int bufIdx = 0; - int valueIdx = offset; - // remaining bits for the current unfinished Integer - int leftBit = 0; - - while (valueIdx < 8 + offset) { - // buffer is used for saving 32 bits as a part of result - int buffer = 0; - // remaining size of bits in the 'buffer' - int leftSize = 32; - - // encode the left bits of current Integer to 'buffer' - if (leftBit > 0) { - buffer |= (values.get(valueIdx) << (32 - leftBit)); - leftSize -= leftBit; - leftBit = 0; - valueIdx++; - } - - while (leftSize >= width && valueIdx < 8 + offset) { - // encode one Integer to the 'buffer' - buffer |= (values.get(valueIdx) << (leftSize - width)); - leftSize -= width; - valueIdx++; - } - // If the remaining space of the buffer can not save the bits for one Integer, - if (leftSize > 0 && valueIdx < 8 + offset) { - // put the first 'leftSize' bits of the Integer into remaining space of the - // buffer - buffer |= (values.get(valueIdx) >>> (width - leftSize)); - leftBit = width - leftSize; - } - - // put the buffer into the final result - for (int j = 0; j < 4; j++) { - encoded_result[encode_pos] = (byte) ((buffer >>> ((3 - j) * 8)) & 0xFF); - encode_pos++; - bufIdx++; - if (bufIdx >= width) { - return; - } - } - } - // return encode_pos; - } public static void pack8Values( int[][] values, int index, int offset, int width, int encode_pos, byte[] encoded_result) { @@ -197,38 +126,6 @@ public class RegerPFloatTest { // return encode_pos; } - public static int unpack8Values( - byte[] encoded, int offset, int width, int value_pos, int[] result_list) { - int byteIdx = offset; - // int pos_encode = 0; - long buffer = 0; - // total bits which have read from 'buf' to 'buffer'. i.e., - // number of available bits to be decoded. - int totalBits = 0; - int valueIdx = 0; - - while (valueIdx < 8) { - // If current available bits are not enough to decode one Integer, - // then add next byte from buf to 'buffer' until totalBits >= width - while (totalBits < width) { - buffer = (buffer << 8) | (encoded[byteIdx] & 0xFF); - byteIdx++; - totalBits += 8; - } - - // If current available bits are enough to decode one Integer, - // then decode one Integer one by one until left bits in 'buffer' is - // not enough to decode one Integer. - while (totalBits >= width && valueIdx < 8) { - result_list[value_pos] = (int) (buffer >>> (totalBits - width)); - value_pos++; - valueIdx++; - totalBits -= width; - buffer = buffer & ((1L << totalBits) - 1); - } - } - return value_pos; - } public static int bitPacking( int[][] numbers, @@ -247,19 +144,6 @@ public class RegerPFloatTest { return encode_pos; } - public static int decodeBitPacking( - byte[] encoded, int decode_pos, int bit_width, int block_size, int[] result_list) { - // int[] result_list = new int[]; - int block_num = block_size / 8; - int value_pos = 0; - - for (int i = 0; i < block_num; i++) { // bitpacking - value_pos = unpack8Values(encoded, decode_pos, bit_width, value_pos, result_list); - decode_pos += bit_width; - } - // decode_pos_result.add(decode_pos); - return decode_pos; - } public static void float2bytes(float f, int pos_encode, byte[] encode_result) { int fbit = Float.floatToIntBits(f); @@ -278,106 +162,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) { - byte[] bytes = new byte[4]; - bytes[0] = (byte) (integer >> 24); - bytes[1] = (byte) (integer >> 16); - bytes[2] = (byte) (integer >> 8); - bytes[3] = (byte) integer; - return bytes; - } - - public static byte[] bitWidth2Bytes(int integer) { - byte[] bytes = new byte[1]; - bytes[0] = (byte) integer; - 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; - byte[] result = new byte[bit_width * block_num]; - - for (int i = 0; i < block_num; i++) { - for (int j = 0; j < bit_width; j++) { - int tmp_int = 0; - for (int k = 0; k < 8; k++) { - tmp_int += (((numbers.get(start + i * 8 + k).get(index) >> j) % 2) << k); - } - result[i * bit_width + j] = (byte) tmp_int; - } - } - return result; - } - - public static ArrayList<Integer> decodebitPacking( - ArrayList<Byte> encoded, int decode_pos, int bit_width, int min_delta, int block_size) { - ArrayList<Integer> result_list = new ArrayList<>(); - for (int i = 0; i < (block_size - 1) / 8; i++) { - int[] val8 = new int[8]; - for (int j = 0; j < 8; j++) { - val8[j] = 0; - } - for (int j = 0; j < bit_width; j++) { - byte tmp_byte = encoded.get(decode_pos + bit_width - 1 - j); - byte[] bit8 = new byte[8]; - for (int k = 0; k < 8; k++) { - bit8[k] = (byte) (tmp_byte & 1); - tmp_byte = (byte) (tmp_byte >> 1); - } - for (int k = 0; k < 8; k++) { - val8[k] = val8[k] * 2 + bit8[k]; - } - } - for (int j = 0; j < 8; j++) { - result_list.add(val8[j] + min_delta); - } - decode_pos += bit_width; - } - return result_list; - } public static int part(ArrayList<ArrayList<Integer>> arr, int index, int low, int high) { ArrayList<Integer> tmp = arr.get(low); @@ -414,7 +198,7 @@ public class RegerPFloatTest { stack.push(low); stack.push(mid - 1); } - while (stack.empty() == false) { + while (!stack.empty()) { high = stack.pop(); low = stack.pop(); mid = part(arr, index, low, high); @@ -448,10 +232,8 @@ public class RegerPFloatTest { if (td_common == 0) { if (time_diffi != 0) { td_common = time_diffi; - continue; - } else { - continue; } + continue; } if (time_diffi != 0) { td_common = getCommon(time_diffi, td_common); @@ -483,124 +265,11 @@ 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 length = ts_block.length; -// 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[i + j][0]; -// } -// Y1[i] = ts_block[i + p][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[i + j][1]; -// } -// Y2[i] = ts_block[i + p][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[2 * i] = (float) param[i]; -// coefficient[2 * i + 1] = (float) param2[i]; -// } -// } - public static void terminate(int[][] ts_block, float[] coefficient, int p){ int length = ts_block.length; assert length > p; int size = length - p; - OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression(); - RealMatrix matrix = new Array2DRowRealMatrix(size, p+1); RealVector vector = new ArrayRealVector(size); @@ -631,12 +300,6 @@ public class RegerPFloatTest { DecompositionSolver solver1 = new SingularValueDecomposition(matrix).getSolver(); RealVector solution2 = solver1.solve(vector); -// // 输出系数 -// System.out.println("自回归模型系数:"); -// for (int i = 0; i < solution.getDimension(); i++) { -// System.out.println("AR(" + (i + 1) + "): " + solution.getEntry(i)); -// } - for (int i = 0; i <= p; i++) { coefficient[2 * i] = (float) solution1.getEntry(p-i); @@ -722,19 +385,13 @@ public class RegerPFloatTest { public static int getBetaP( int[][] ts_block, int alpha, int block_size, int[] raw_length, float[] theta, int p) { - int timestamp_delta_min = Integer.MAX_VALUE; - int value_delta_min = Integer.MAX_VALUE; - int max_timestamp = Integer.MIN_VALUE; - int max_value = Integer.MIN_VALUE; - int raw_timestamp_delta_max_index = -1; - int raw_value_delta_max_index = -1; int raw_abs_sum = raw_length[0]; int range = block_size / 32; ArrayList<Integer> j_star_list = new ArrayList<>(); // beta list of min b phi alpha to j -// ArrayList<Integer> max_index = new ArrayList<>(); + int j_star = -1; @@ -1000,7 +657,6 @@ public class RegerPFloatTest { private static int[] adjustCase1(int[][] ts_block, int alpha, int j_star, float[] theta, int p) { int[][] tmp_ts_block = new int[ts_block.length][2]; cloneTsblock(ts_block,tmp_ts_block); - int block_size = ts_block.length; int[] delta_index = new int[4]; int[] delta = new int[4]; @@ -1036,7 +692,6 @@ public class RegerPFloatTest { private static int[] adjustCase2(int[][] ts_block, int alpha, int j_star, float[] theta, int p) { int[][] tmp_ts_block = new int[ts_block.length][2]; cloneTsblock(ts_block,tmp_ts_block); - int block_size = ts_block.length; int[] tmp_tv = tmp_ts_block[alpha].clone(); for (int u = alpha - 1; u >= j_star; u--) { tmp_ts_block[u + 1][0] = tmp_ts_block[u][0]; @@ -1047,7 +702,7 @@ public class RegerPFloatTest { int[] delta_index = new int[4]; int[] delta = new int[4]; - int[][] ts_block_delta = new int[block_size - p][2]; + int[][] ts_block_delta; ts_block_delta =deltaTSBlock(tmp_ts_block, delta_index,delta, theta, p); int timestamp_delta_min = delta[2]; @@ -1067,7 +722,6 @@ public class RegerPFloatTest { private static int[] adjustCase3(int[][] ts_block, int alpha, int j_star, float[] theta, int p) { int[][] tmp_ts_block = new int[ts_block.length][2]; cloneTsblock(ts_block,tmp_ts_block); - int block_size = ts_block.length; int[] tmp_tv = tmp_ts_block[alpha].clone(); for (int u = alpha + 1; u < j_star; u++) { tmp_ts_block[u - 1][0] = tmp_ts_block[u][0]; @@ -1079,7 +733,7 @@ public class RegerPFloatTest { int[] delta_index = new int[4]; int[] delta = new int[4]; - int[][] ts_block_delta = new int[block_size - p][2]; + int[][] ts_block_delta; ts_block_delta =deltaTSBlock(tmp_ts_block, delta_index,delta, theta, p); int timestamp_delta_min = delta[2]; @@ -1099,7 +753,6 @@ public class RegerPFloatTest { private static int[] adjustCase4(int[][] ts_block, int alpha, int j_star, float[] theta, int p) { int[][] tmp_ts_block = new int[ts_block.length][2]; cloneTsblock(ts_block,tmp_ts_block); - int block_size = ts_block.length; int[] tmp_tv = tmp_ts_block[alpha].clone(); for (int u = alpha + 1; u < j_star; u++) { tmp_ts_block[u - 1][0] = tmp_ts_block[u][0]; @@ -1111,7 +764,7 @@ public class RegerPFloatTest { int[] delta_index = new int[4]; int[] delta = new int[4]; - int[][] ts_block_delta = new int[block_size - p][2]; + int[][] ts_block_delta; ts_block_delta =deltaTSBlock(tmp_ts_block, delta_index,delta, theta, p); int timestamp_delta_min = delta[2]; @@ -1141,7 +794,7 @@ public class RegerPFloatTest { tmp_ts_block[block_size - 1][1] = tmp_tv[1]; int[] delta_index = new int[4]; int[] delta = new int[4]; - int[][] ts_block_delta = new int[block_size - p][2]; + int[][] ts_block_delta; ts_block_delta =deltaTSBlock(tmp_ts_block, delta_index,delta, theta, p); int timestamp_delta_min = delta[2]; @@ -1162,16 +815,11 @@ public class RegerPFloatTest { public static int encodeRLEBitWidth2Bytes(int[][] bit_width_segments) { int encoded_result = 0; - // ArrayList<ArrayList<Integer>> run_length_time = new ArrayList<>(); - // ArrayList<ArrayList<Integer>> run_length_value = new ArrayList<>(); - int count_of_time = 1; int count_of_value = 1; int pre_time = bit_width_segments[0][0]; int pre_value = bit_width_segments[0][1]; int size = bit_width_segments.length; - int[][] run_length_time = new int[size][2]; - int[][] run_length_value = new int[size][2]; int pos_time = 0; int pos_value = 0; @@ -1180,8 +828,7 @@ public class RegerPFloatTest { int cur_time = bit_width_segments[i][0]; int cur_value = bit_width_segments[i][1]; if (cur_time != pre_time && count_of_time != 0) { - run_length_time[pos_time][0] = count_of_time; - run_length_time[pos_time][1] = pre_time; + pos_time++; pre_time = cur_time; count_of_time = 1; @@ -1189,16 +836,14 @@ public class RegerPFloatTest { count_of_time++; pre_time = cur_time; if (count_of_time == 256) { - run_length_time[pos_time][0] = count_of_time; - run_length_time[pos_time][1] = pre_time; + pos_time++; count_of_time = 1; } } if (cur_value != pre_value && count_of_value != 0) { - run_length_value[pos_value][0] = count_of_value; - run_length_value[pos_value][1] = pre_value; + pos_value++; pre_value = cur_value; @@ -1207,21 +852,15 @@ public class RegerPFloatTest { count_of_value++; pre_value = cur_value; if (count_of_value == 256) { - run_length_value[pos_value][0] = count_of_value; - run_length_value[pos_value][1] = pre_value; pos_value++; count_of_value = 0; } } } if (count_of_time != 0) { - run_length_time[pos_time][0] = count_of_time; - run_length_time[pos_time][1] = pre_time; pos_time++; } if (count_of_value != 0) { - run_length_value[pos_value][0] = count_of_value; - run_length_value[pos_value][1] = pre_value; pos_value++; } @@ -1297,11 +936,7 @@ public class RegerPFloatTest { pos_encode += 2; intWord2Bytes(pos_value, pos_encode, encoded_result); pos_encode += 2; - // System.out.println("pos_time="+pos_time); - // System.out.println("pos_value="+pos_value); - // System.out.println(Arrays.deepToString(run_length_time)); - // System.out.println(Arrays.deepToString(run_length_value)); for (int i = 0; i < pos_time; i++) { int[] bit_width_time = run_length_time[i]; intByte2Bytes(bit_width_time[0], pos_encode, encoded_result); @@ -1309,8 +944,6 @@ public class RegerPFloatTest { intByte2Bytes(bit_width_time[1], pos_encode, encoded_result); pos_encode++; - // System.out.println("bit_width_time[0]="+bit_width_time[0]); - // System.out.println("bit_width_time[1]="+bit_width_time[1]); } for (int i = 0; i < pos_value; i++) { int[] bit_width_value = run_length_value[i]; @@ -1319,8 +952,6 @@ public class RegerPFloatTest { intByte2Bytes(bit_width_value[1], pos_encode, encoded_result); pos_encode++; - // System.out.println("bit_width_value[0]="+bit_width_value[0]); - // System.out.println("bit_width_value[1]="+bit_width_value[1]); } return pos_encode; @@ -1331,7 +962,6 @@ public class RegerPFloatTest { int[][] bit_width_segments, int[] raw_length, int segment_size, - int p, float[] theta, int pos_encode, byte[] encoded_result) { @@ -1357,12 +987,6 @@ public class RegerPFloatTest { int2Bytes(raw_length[4], pos_encode, encoded_result); pos_encode += 4; - // System.out.println(delta_segments[0][0]); - // System.out.println(delta_segments[0][1]); - // System.out.println(theta[0] + raw_length[3]); - // System.out.println(theta[1]); - // System.out.println(theta[2] + raw_length[4]); - // System.out.println(theta[3]); pos_encode = encodeRLEBitWidth2Bytes(bit_width_segments, pos_encode, encoded_result); for (int segment_i = 0; segment_i < segment_n; segment_i++) { @@ -1393,7 +1017,7 @@ public class RegerPFloatTest { public static int[][] getEncodeBitsRegressionNoTrain( - int[][] ts_block, int block_size, int[] raw_length, float[] theta, int segment_size, int p) { + int[][] ts_block, int block_size, int[] raw_length, float[] theta, 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]; @@ -1473,7 +1097,6 @@ public class RegerPFloatTest { int[][] bit_width_segments, int segment_size, int p) { - ArrayList<Byte> encoded_result = new ArrayList<>(); int block_size = delta_segments.length; int segment_n = (block_size - p) / segment_size; int result = 0; @@ -1543,8 +1166,8 @@ public class RegerPFloatTest { float epsilon_v = (float) 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] * (float) ts_block[j - pi][0]; + epsilon_v -= theta[2 * pi + 1] * (float) ts_block[j - pi][1]; } ts_block_delta[j][0] = (int) epsilon_r; ts_block_delta[j][1] = (int) epsilon_v; @@ -1582,7 +1205,6 @@ public class RegerPFloatTest { public static int[] getIStar( int[][] ts_block, ArrayList<Integer> min_index, - int block_size, int index, float[] theta, int p) { @@ -1606,7 +1228,7 @@ public class RegerPFloatTest { } public static int[] getIStar( - int[][] ts_block, ArrayList<Integer> min_index, int block_size, float[] theta, int p, int k) { + int[][] ts_block, ArrayList<Integer> min_index, float[] theta, int p) { int[] alpha_list = new int[4]; @@ -1647,7 +1269,6 @@ public class RegerPFloatTest { int supply_length, int[] third_value, int segment_size, - int k, int p, int encode_pos, byte[] cur_byte) { @@ -1659,11 +1280,8 @@ public class RegerPFloatTest { ts_block = new int[block_size][2]; ts_block_partition = new int[block_size][2]; for (int j = 0; j < block_size; j++) { -// data[j + i * block_size][0] -= min_time; ts_block[j][0] = data[j + i * block_size][0]-min_time; ts_block[j][1] = data[j + i * block_size][1]; - // ts_block_reorder[j][0] = data[j + i * block_size][0]; - // ts_block_reorder[j][1] = data[j + i * block_size][1]; } } else { ts_block = new int[supply_length][2]; @@ -1682,8 +1300,6 @@ public class RegerPFloatTest { } int2Bytes(min_time,encode_pos,cur_byte); encode_pos += 4; - // System.out.println(Arrays.deepToString(data)); - // System.out.println(Arrays.deepToString(ts_block)); int[] reorder_length = new int[5]; float[] theta_reorder = new float[2 * p + 2]; @@ -1693,28 +1309,16 @@ public class RegerPFloatTest { 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]; - 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]; - int[][] bit_width_segments_time; - int[][] ts_block_delta = new int[block_size][2]; - int[][] bit_width_segments_partition; + int[][] ts_block_delta_reorder; + int[][] ts_block_delta_time; + int[][] ts_block_delta; terminate(ts_block, theta_time, p); ts_block_delta_time = - getEncodeBitsRegressionNoTrain(ts_block, block_size, time_length, theta_time, segment_size, p); -// System.out.println(Arrays.deepToString(ts_block)); - 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, -// segment_size, -// p -// ); -// System.out.println((Arrays.toString(theta_time))); -//// System.out.println((Arrays.deepToString(ts_block_delta))); -// System.out.println((Arrays.toString(time_length))); + getEncodeBitsRegressionNoTrain(ts_block, block_size, time_length, theta_time, p); + + segmentBitPacking(ts_block_delta_time, block_size, segment_size); + int pos_ts_block_partition = 0; if (third_value.length > 0) { @@ -1749,14 +1353,10 @@ public class RegerPFloatTest { terminate(ts_block_partition, theta, p); ts_block_delta = getEncodeBitsRegressionNoTrain( - ts_block_partition, block_size, raw_length, theta, segment_size, p); - bit_width_segments_partition = segmentBitPacking(ts_block_delta, block_size, segment_size); + ts_block_partition, block_size, raw_length, theta, p); + segmentBitPacking(ts_block_delta, block_size, segment_size); -// raw_length[0] = -// numberOfEncodeSegment2Bytes( -// ts_block_delta, bit_width_segments_partition, segment_size, p); - Arrays.sort( ts_block, (a, b) -> { @@ -1766,40 +1366,17 @@ public class RegerPFloatTest { terminate(ts_block, theta_reorder, p); ts_block_delta_reorder = getEncodeBitsRegressionNoTrain( - ts_block, block_size, reorder_length, theta_reorder, segment_size, p); - 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, -// segment_size, -// p -// ); - // System.out.println(Arrays.deepToString(ts_block_delta)); + ts_block, block_size, reorder_length, theta_reorder, p); + segmentBitPacking(ts_block_delta_reorder, block_size, segment_size); + int[] alpha_list; int choose = min3(time_length[0], raw_length[0], reorder_length[0]); ArrayList<Integer> min_index = new ArrayList<>(); int index_alpha_list = 0; -// if (time_length[0] < raw_length[0]) { -// raw_length = time_length.clone(); -//// System.out.println("time"); -// Arrays.sort( -// ts_block, -// (a, b) -> { -// if (a[0] == b[0]) return Integer.compare(a[1], b[1]); -// return Integer.compare(a[0], b[0]); -// }); -// theta = theta_time.clone(); -// } else { -// ts_block = ts_block_partition.clone(); -// -// } if (choose == 0) { raw_length = time_length.clone(); -// System.out.println("time"); Arrays.sort( ts_block, (a, b) -> { @@ -1809,10 +1386,9 @@ public class RegerPFloatTest { theta = theta_time.clone(); } else if (choose == 1) { ts_block = ts_block_partition.clone(); -// System.out.println("partition"); + } else { raw_length = reorder_length.clone(); -// System.out.println("value"); theta = theta_reorder.clone(); Arrays.sort( ts_block, @@ -1823,16 +1399,13 @@ public class RegerPFloatTest { index_alpha_list = 1; } -// System.out.println(Arrays.toString(theta)); -// System.out.println(Arrays.toString(raw_length)); - alpha_list = getIStar(ts_block, min_index, block_size, index_alpha_list, theta, p); + alpha_list = getIStar(ts_block, min_index, index_alpha_list, theta, p); int[] beta_list = new int[alpha_list.length]; int[][] new_length_list = new int[alpha_list.length][5]; int pos_new_length_list = 0; - // ArrayList<ArrayList<Integer>> new_length_list = new ArrayList<>(); for (int j = 0; j < alpha_list.length; j++) { int alpha = alpha_list[j]; @@ -1867,7 +1440,7 @@ public class RegerPFloatTest { beta_list[all_length.get(0).get(0)]); int[] new_length = new int[5]; ts_block_delta = - getEncodeBitsRegressionNoTrain(new_ts_block, block_size, new_length, theta, segment_size, p); + getEncodeBitsRegressionNoTrain(new_ts_block, block_size, new_length, theta, p); int[][] bit_width_segments = segmentBitPacking(ts_block_delta, block_size, segment_size); new_length[0] = numberOfEncodeSegment2Bytes( @@ -1883,7 +1456,7 @@ public class RegerPFloatTest { } else { break; } - alpha_list = getIStar(ts_block, min_index, block_size, theta, p, k); + alpha_list = getIStar(ts_block, min_index, theta, p); int alpha_size = alpha_list.length; for (int alpha_i = alpha_size - 1; alpha_i >= 0; alpha_i--) { @@ -1906,16 +1479,12 @@ public class RegerPFloatTest { isMoveable = isMovable(alpha_list, beta_list); } - // System.out.println("getEncodeBitsRegressionNoTrain before:" + - // Arrays.deepToString(ts_block_delta)); + ts_block_delta = - getEncodeBitsRegressionNoTrain(ts_block, block_size, raw_length, theta, segment_size, p); + getEncodeBitsRegressionNoTrain(ts_block, block_size, raw_length, theta, p); - // System.out.println("getEncodeBitsRegressionNoTrain after:" - // +Arrays.deepToString(ts_block_delta)); - // ArrayList<ArrayList<Integer>> bit_width_segments = new ArrayList<>(); int segment_n = (block_size - 1) / segment_size; int[][] bit_width_segments = new int[segment_n][2]; for (int segment_i = 0; segment_i < segment_n; segment_i++) { @@ -1939,8 +1508,7 @@ public class RegerPFloatTest { bit_width_segments[segment_i][1] = bit_width_value; } - // System.out.println(Arrays.deepToString(ts_block_delta)); - // System.out.println(Arrays.deepToString(bit_width_segments)); + encode_pos = encodeSegment2Bytes( @@ -1948,12 +1516,11 @@ public class RegerPFloatTest { bit_width_segments, raw_length, segment_size, - p, - theta, + theta, encode_pos, cur_byte); - // System.out.println("encode_pos="+encode_pos); + return encode_pos; } @@ -1963,9 +1530,8 @@ public class RegerPFloatTest { int[] third_value, int segment_size, int p, - int k, byte[] encoded_result) { -// for (int i = 0; i < p; i++) + block_size++; int length_all = data.length; @@ -1984,139 +1550,7 @@ public class RegerPFloatTest { intByte2Bytes(p, encode_pos, encoded_result); encode_pos += 1; - // ----------------------- compare data order by time, value and partition - // --------------------------- - int length_time = 0; - int length_value = 0; - int length_partition = 0; -// int[][] data_value = data.clone(); -// Arrays.sort( -// data_value, -// (a, b) -> { -// if (a[1] == b[1]) return Integer.compare(a[0], b[0]); -// return Integer.compare(a[1], b[1]); -// }); -// -// int[][] data_partition = new int[length_all][2]; -// int pos_data_partition = 0; -// -// for (int[] datum : data) { -// if (datum[1] > third_value[third_value.length - 1]) { -// data_partition[pos_data_partition][0] = datum[0]; -// data_partition[pos_data_partition][1] = datum[1]; -// pos_data_partition++; -// } -// } -// for (int third_i = third_value.length - 1; third_i > 0; third_i--) { -// for (int[] datum : data) { -// if (datum[1] <= third_value[third_i] && datum[1] > third_value[third_i - 1]) { -// data_partition[pos_data_partition][0] = datum[0]; -// data_partition[pos_data_partition][1] = datum[1]; -// pos_data_partition++; -// } -// } -// } -// for (int[] datum : data) { -// if (datum[1] <= third_value[0]) { -// data_partition[pos_data_partition][0] = datum[0]; -// data_partition[pos_data_partition][1] = datum[1]; -// pos_data_partition++; -// } -// } -// for (int i = 0; i < block_num; i++) { -// int[][] ts_block_time = new int[block_size][2]; -// int[][] ts_block_value = new int[block_size][2]; -// int[][] ts_block_partition = new int[block_size][2]; -// -// for (int j = 0; j < block_size; j++) { -// ts_block_time[j][0] = data[j + i * block_size][0]; -// ts_block_time[j][1] = data[j + i * block_size][1]; -// ts_block_value[j][0] = data_value[j + i * block_size][0]; -// ts_block_value[j][1] = data_value[j + i * block_size][1]; -// ts_block_partition[j][0] = data_partition[j + i * block_size][0]; -// ts_block_partition[j][1] = data_partition[j + i * block_size][1]; -// } -// -// int[] raw_length = new int[5]; -// float[] theta = new float[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, segment_size, p); -// -// int[] raw_length_value = new int[5]; -// float[] theta_value = new float[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, -// segment_size, -// p -// ); -// -// int[] raw_length_partition = new int[5]; -// float[] theta_partition = new float[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, -// segment_size, -// p -// ); -// } - -// if (length_partition < length_time -// && length_partition < length_value) { // partition performs better -// data = data_partition; -// // for (int i = 0; i < 2; i++) { -// System.out.println("Partition"); -// for (int i = 0; i < block_num; i++) { -// encode_pos = -// REGERBlockEncoderPartition( -// data, i, block_size, segment_size, k, p, encode_pos, encoded_result); -// } -// } else { -// if (length_value < length_time) { // order by value performs better -// System.out.println("Value"); -// data = data_value; -//// for (int i = 0; i < 1; i++) { -// for (int i = 0; i < block_num; i++) { -// -// encode_pos = -// REGERBlockEncoder( -// data, -// 1, -// i, -// block_size, -// 0, -// third_value, -// segment_size, -// k, -// p, -// encode_pos, -// encoded_result); -// } -// } else { -// System.out.println("Time"); - // for (int i = 0; i < 2; i++) { -// for (int i = 0; i < 1; i++) { + for (int i = 0; i < block_num; i++) { encode_pos = REGERBlockEncoder( @@ -2126,13 +1560,11 @@ public class RegerPFloatTest { 0, third_value, segment_size, - k, - p, + p, encode_pos, encoded_result); } -// } -// } + int remaining_length = length_all - block_num * block_size; if (remaining_length == 1) { @@ -2163,8 +1595,7 @@ public class RegerPFloatTest { supple_length + remaining_length, third_value, segment_size, - k, - p, + p, encode_pos, encoded_result); } @@ -2172,256 +1603,6 @@ public class RegerPFloatTest { return encode_pos; } - public static double bytes2Double(ArrayList<Byte> encoded, int start, int num) { - if (num > 8) { - System.out.println("bytes2Doubleerror"); - return 0; - } - long value = 0; - for (int i = 0; i < 8; i++) { - value |= ((long) (encoded.get(i + start) & 0xff)) << (8 * i); - } - 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; - if (num > 4) { - System.out.println("bytes2Integer error"); - return 0; - } - for (int i = 0; i < num; i++) { - value <<= 8; - int b = encoded.get(i + start) & 0xFF; - value |= b; - } - return value; - } - - public static double[] dataStandardization(double[] array) { - StandardDeviation deviation = new StandardDeviation(); - for (int i = 0; i < array.length; i++) { - array[i] = array[i]; - } - return array; - } - - public static double[][] dataStandardizationDouble(double[][] arrays) { - double[][] result = new double[arrays[0].length][arrays.length]; - for (int i = 0; i < arrays.length; i++) { - double[] doubles = dataStandardization(arrays[i]); - for (int k = 0; k < result.length; k++) { - result[k][i] = doubles[k]; - } - } - return result; - } - -// @Test -// public void REGERPFloat() 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 input_parent_dir = parent_dir + "trans_data/"; -// -// ArrayList<String> input_path_list = new ArrayList<>(); -// ArrayList<String> output_path_list = new ArrayList<>(); -// ArrayList<String> dataset_name = new ArrayList<>(); -// ArrayList<Integer> dataset_block_size = new ArrayList<>(); -// -// ArrayList<int[]> dataset_third = new ArrayList<>(); -// -// dataset_name.add("CS-Sensors"); -// dataset_name.add("Metro-Traffic"); -// dataset_name.add("USGS-Earthquakes"); -// dataset_name.add("YZ-Electricity"); -// dataset_name.add("GW-Magnetic"); -// dataset_name.add("TY-Fuel"); -// dataset_name.add("Cyber-Vehicle"); -// dataset_name.add("Vehicle-Charge"); -// dataset_name.add("Nifty-Stocks"); -// dataset_name.add("TH-Climate"); -// dataset_name.add("TY-Transport"); -// dataset_name.add("EPM-Education"); -// -// int[] dataset_0 = {547, 2816}; -// int[] dataset_1 = {1719, 3731}; -// int[] dataset_2 = {-48, -11, 6, 25, 52}; -// int[] dataset_3 = {8681, 13584}; -// int[] dataset_4 = {79, 184, 274}; -// int[] dataset_5 = {17, 68}; -// int[] dataset_6 = {677}; -// int[] dataset_7 = {1047, 1725}; -// int[] dataset_8 = {227, 499, 614, 1013}; -// int[] dataset_9 = {474, 678}; -// int[] dataset_10 = {4, 30, 38, 49, 58}; -// int[] dataset_11 = {5182, 8206}; -// -// dataset_third.add(dataset_0); -// dataset_third.add(dataset_1); -// dataset_third.add(dataset_2); -// dataset_third.add(dataset_3); -// dataset_third.add(dataset_4); -// dataset_third.add(dataset_5); -// dataset_third.add(dataset_6); -// dataset_third.add(dataset_7); -// dataset_third.add(dataset_8); -// dataset_third.add(dataset_9); -// dataset_third.add(dataset_10); -// dataset_third.add(dataset_11); -// -// for (int i = 0; i < dataset_name.size(); i++) { -// input_path_list.add(input_parent_dir + dataset_name.get(i)); -// dataset_block_size.add(1024); -// } -// -// 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 -// // dataset_block_size.add(512); -// 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(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 -// // dataset_block_size.add(64); -// 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 -// // dataset_block_size.add(512); -// 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 -// // dataset_block_size.add(512); -// 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 -// // dataset_block_size.add(512); -// -// for (int file_i = 0; file_i < input_path_list.size(); file_i++) { -// // for (int file_i = 3; file_i < 4; file_i++) { -// -// String inputPath = input_path_list.get(file_i); -// String Output = output_path_list.get(file_i); -// System.out.println(inputPath); -// -// // speed -// int repeatTime = 1; // set repeat time -// -// File file = new File(inputPath); -// File[] tempList = file.listFiles(); -// -// CsvWriter writer = new CsvWriter(Output, ',', StandardCharsets.UTF_8); -// -// String[] head = { -// "Input Direction", -// "Encoding Algorithm", -// "Encoding Time", -// "Decoding Time", -// "Points", -// "p", -// "Compressed Size", -// "Compression Ratio" -// }; -// writer.writeRecord(head); // write header to output file -// -// assert tempList != null; -// -// for (File f : tempList) { -// System.out.println(f); -// for (int p = 2; p < 3; p++) { -// // for (int p = 1; p < 10; p++) { -// System.out.println("p=" + p); -// -// InputStream inputStream = Files.newInputStream(f.toPath()); -// CsvReader loader = new CsvReader(inputStream, StandardCharsets.UTF_8); -// ArrayList<ArrayList<Integer>> data = new ArrayList<>(); -// ArrayList<ArrayList<Integer>> data_decoded = new ArrayList<>(); -// -// // add a column to "data" -// loader.readHeaders(); -// data.clear(); -// while (loader.readRecord()) { -// ArrayList<Integer> tmp = new ArrayList<>(); -// tmp.add(Integer.valueOf(loader.getValues()[0])); -// tmp.add(Integer.valueOf(loader.getValues()[1])); -// data.add(tmp); -// } -// inputStream.close(); -// ArrayList<Integer> result2 = new ArrayList<>(); -// splitTimeStamp3(data, result2); -// int[][] data2_arr = new int[data.size()][2]; -// int min_time = data.get(0).get(0); -// for (int i = 0; i < data.size(); i++) { -// data2_arr[i][0] = data.get(i).get(0) - min_time; -// data2_arr[i][1] = data.get(i).get(1); -// } -// System.out.println(data2_arr[0][0]); -// byte[] encoded_result = new byte[data2_arr.length * 8]; -// -// long encodeTime = 0; -// long decodeTime = 0; -// double ratio = 0; -// double compressed_size = 0; -// int length = 0; -// -// long s = System.nanoTime(); -// -// for (int repeat_i = 0; repeat_i < 1; repeat_i++) -// length = -// ReorderingRegressionEncoder( -// data2_arr, -// dataset_block_size.get(file_i), -// dataset_third.get(file_i), -// 8, -// p, -// 1, -// encoded_result); -// -// long e = System.nanoTime(); -// encodeTime += ((e - s)); -// compressed_size += length; -// double ratioTmp = (double) compressed_size / (double) (data.size() * Integer.BYTES * 2); -// ratio += ratioTmp; -// s = System.nanoTime(); -// e = System.nanoTime(); -// decodeTime += ((e - s)); -// -// String[] record = { -// f.toString(), -// "REGER-32-FLOAT", -// String.valueOf(encodeTime), -// String.valueOf(decodeTime), -// String.valueOf(data.size()), -// String.valueOf(p), -// String.valueOf(compressed_size), -// String.valueOf(ratio) -// }; -// -// writer.writeRecord(record); -// System.out.println(ratio); -// } -// } -// writer.close(); -// } -// } @Test public void REGERPFloatVaryP() throws IOException { @@ -2485,52 +1666,33 @@ public class RegerPFloatTest { dataset_third.add(dataset_12); dataset_third.add(dataset_13); - for (int i = 0; i < dataset_name.size(); i++) { - input_path_list.add(input_parent_dir + dataset_name.get(i)); + for (String value : dataset_name) { + input_path_list.add(input_parent_dir + value); dataset_block_size.add(512); } 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 - // dataset_block_size.add(512); - output_path_list.add(output_parent_dir + "/USGS-Earthquakes_ratio.csv"); // 2 - // dataset_block_size.add(512); + output_path_list.add(output_parent_dir + "/Metro-Traffic_ratio.csv");// 1 + output_path_list.add(output_parent_dir + "/USGS-Earthquakes_ratio.csv");// 2 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 - // dataset_block_size.add(64); - 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 - // dataset_block_size.add(512); - 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 - // dataset_block_size.add(512); - 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 - // dataset_block_size.add(512); + output_path_list.add(output_parent_dir + "/GW-Magnetic_ratio.csv"); //4 + output_path_list.add(output_parent_dir + "/TY-Fuel_ratio.csv");//5 + output_path_list.add(output_parent_dir + "/Cyber-Vehicle_ratio.csv"); //6 + output_path_list.add(output_parent_dir + "/Vehicle-Charge_ratio.csv");//7 + output_path_list.add(output_parent_dir + "/Nifty-Stocks_ratio.csv");//8 + output_path_list.add(output_parent_dir + "/TH-Climate_ratio.csv");//9 + output_path_list.add(output_parent_dir + "/TY-Transport_ratio.csv");//10 + output_path_list.add(output_parent_dir + "/EPM-Education_ratio.csv");//11 output_path_list.add(output_parent_dir + "/FANYP-Sensors_ratio.csv"); // 12 output_path_list.add(output_parent_dir + "/TRAJET-Transport_ratio.csv"); // 13 - // 0 2 6 7 -// int[] file_lists = {1,9}; -// for (int file_i : file_lists) { for (int file_i = 0; file_i < input_path_list.size(); file_i++) { -// for (int file_i = 12; file_i < 14; file_i++) { -// + String inputPath = input_path_list.get(file_i); String Output = output_path_list.get(file_i); System.out.println(inputPath); - // speed - int repeatTime = 1; // set repeat time File file = new File(inputPath); File[] tempList = file.listFiles(); @@ -2556,18 +1718,16 @@ public class RegerPFloatTest { System.out.println(count_csv); count_csv ++; System.out.println(f); -// for (int p = 1; p < 2; p++) { + for (int p = 1; p < 10; p++) { System.out.println("p=" + p); InputStream inputStream = Files.newInputStream(f.toPath()); CsvReader loader = new CsvReader(inputStream, StandardCharsets.UTF_8); ArrayList<ArrayList<Integer>> data = new ArrayList<>(); - ArrayList<ArrayList<Integer>> data_decoded = new ArrayList<>(); // add a column to "data" loader.readHeaders(); - data.clear(); while (loader.readRecord()) { ArrayList<Integer> tmp = new ArrayList<>(); tmp.add(Integer.valueOf(loader.getValues()[0])); @@ -2583,7 +1743,7 @@ public class RegerPFloatTest { data2_arr[i][0] = data.get(i).get(0) - min_time; data2_arr[i][1] = data.get(i).get(1); } -// System.out.println(data2_arr[0][0]); + byte[] encoded_result = new byte[data2_arr.length * 8]; long encodeTime = 0; @@ -2602,13 +1762,12 @@ public class RegerPFloatTest { dataset_third.get(file_i), 16, p, - 1, - encoded_result); + encoded_result); long e = System.nanoTime(); encodeTime += ((e - s)); compressed_size += length; - double ratioTmp = (double) compressed_size / (double) (data.size() * Integer.BYTES * 2); + double ratioTmp = compressed_size / (double) (data.size() * Integer.BYTES * 2); ratio += ratioTmp; s = System.nanoTime(); e = System.nanoTime(); @@ -2628,7 +1787,7 @@ public class RegerPFloatTest { writer.writeRecord(record); System.out.println(ratio); } -// break; + } writer.close(); }
