This is an automated email from the ASF dual-hosted git repository. leirui pushed a commit to branch research/area-visualization in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit c449be4b50651a669c2d8ba8427b7fd894703a68 Author: Lei Rui <[email protected]> AuthorDate: Thu Jan 23 16:38:39 2025 +0800 add --- .../src/main/java/org/apache/iotdb/db/query/eBUG/Point.java | 3 --- .../src/main/java/org/apache/iotdb/db/query/eBUG/Test1.java | 5 +++-- .../src/main/java/org/apache/iotdb/db/query/eBUG/Tmp.java | 1 + .../src/main/java/org/apache/iotdb/db/query/eBUG/eBUG.java | 13 ------------- 4 files changed, 4 insertions(+), 18 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/query/eBUG/Point.java b/server/src/main/java/org/apache/iotdb/db/query/eBUG/Point.java index 70aa19ea531..6e6fc3aa91e 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/eBUG/Point.java +++ b/server/src/main/java/org/apache/iotdb/db/query/eBUG/Point.java @@ -4,7 +4,6 @@ public class Point { double x, y, z; -// public boolean eliminated; // 滞后e个淘汰点 for eBUG usage public Point prev; // 指向T'_max{0,k-e}里当前点的前一个点 for eBUG usage public Point next; // 指向T'_max{0,k-e}里当前点的后一个点 for eBUG usage // 注意Triangle里的prev&next用于最新状态下存在三角形之间的连接关系, @@ -22,8 +21,6 @@ public class Point { } public void markEliminated() { -// eliminated = true; - // to avoid traversing each point between pa to pb, // instead only traversing at most e most recently eliminated points lagged prev.next = next; diff --git a/server/src/main/java/org/apache/iotdb/db/query/eBUG/Test1.java b/server/src/main/java/org/apache/iotdb/db/query/eBUG/Test1.java index 28b0eebd53e..426cfdc538d 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/eBUG/Test1.java +++ b/server/src/main/java/org/apache/iotdb/db/query/eBUG/Test1.java @@ -9,10 +9,11 @@ import java.util.Random; import static org.apache.iotdb.db.query.eBUG.eBUG.buildEffectiveArea; public class Test1 { + // 用于验证Java eBUG实现和python版本(e=0/1)结果的一致性 public static void main(String[] args) { Polyline polyline = new Polyline(); List<Polyline> polylineList = new ArrayList<>(); - Random rand = new Random(1); + Random rand = new Random(2); int n = 10000; int p = 10; @@ -43,7 +44,7 @@ public class Test1 { } System.out.println("---------------------------------"); - int eParam = 1000000; + int eParam = 0; long startTime = System.currentTimeMillis(); List<Point> results = buildEffectiveArea(polyline, eParam, false); // 输出结果 diff --git a/server/src/main/java/org/apache/iotdb/db/query/eBUG/Tmp.java b/server/src/main/java/org/apache/iotdb/db/query/eBUG/Tmp.java index ad95ee6ec51..9cfb8ac3d5f 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/eBUG/Tmp.java +++ b/server/src/main/java/org/apache/iotdb/db/query/eBUG/Tmp.java @@ -8,6 +8,7 @@ import java.util.PriorityQueue; import java.util.Random; public class Tmp { + // 用于debug为什么n>2kw的耗时增大明显 public static void main(String[] args) { int seed = 10; Random rand = new Random(seed); diff --git a/server/src/main/java/org/apache/iotdb/db/query/eBUG/eBUG.java b/server/src/main/java/org/apache/iotdb/db/query/eBUG/eBUG.java index 408d440a46f..e283789239a 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/eBUG/eBUG.java +++ b/server/src/main/java/org/apache/iotdb/db/query/eBUG/eBUG.java @@ -52,12 +52,6 @@ public class eBUG { // cnt += 1; // System.out.println(cnt); // 3<=cnt<=e+3 -// for (int i = pa_idx; i <= pb_idx; i++) { // 左闭右闭 -// Point p = lineToSimplify.get(i); -// if (!p.eliminated) { -// res.add(p); -// } -// } return res; } @@ -68,10 +62,6 @@ public class eBUG { List<Point> results = lineToSimplify.getVertices(); // 浅复制 - // 用循环数组来记录最近淘汰的点 -// int[] recentEliminated = new int[e]; // init 0 points to the first point, skipped in findEliminated -// int recentEliminatedIdx = 0; // index in the array, circulate - // 存储的是点的引用,这样可以修改原来序列里点的淘汰状态 // 存储的是距离当前最新状态的滞后的尚未施加、待施加的e个淘汰点 LinkedList<Point> laggedEliminatedPoints = new LinkedList<>(); @@ -85,10 +75,8 @@ public class eBUG { Triangle[] triangles = new Triangle[nTriangles]; // 创建所有三角形并计算初始面积 -// lineToSimplify.get(0).eliminated = false; // 初始化点的状态 for eBUG usage lineToSimplify.get(0).prev = null; lineToSimplify.get(0).next = lineToSimplify.get(1); -// lineToSimplify.get(total - 1).eliminated = false; // 初始化点的状态 for eBUG usage lineToSimplify.get(total - 1).next = null; lineToSimplify.get(total - 1).prev = lineToSimplify.get(total - 2); for (int i = 1; i < total - 1; i++) { @@ -97,7 +85,6 @@ public class eBUG { triangles[i - 1] = new Triangle(index1, index2, index3, area); // 初始化点的状态 for eBUG usage -// lineToSimplify.get(i).eliminated = false; lineToSimplify.get(i).prev = lineToSimplify.get(i - 1); lineToSimplify.get(i).next = lineToSimplify.get(i + 1); }
