You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by jf...@apache.org on 2019/08/21 22:26:20 UTC
[plc4x] 02/02: Minimal changes
This is an automated email from the ASF dual-hosted git repository.
jfeinauer pushed a commit to branch feature/new-api
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit a67342eb8a62dcb894d12f8e5908a8e77a613c68
Author: Julian Feinauer <j....@pragmaticminds.de>
AuthorDate: Thu Aug 22 00:26:11 2019 +0200
Minimal changes
---
.../java/base/next/optimizer/OptimizerTest.java | 27 ++++++++++++++++++----
1 file changed, 22 insertions(+), 5 deletions(-)
diff --git a/plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/next/optimizer/OptimizerTest.java b/plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/next/optimizer/OptimizerTest.java
index b025b2b..d6490b4 100644
--- a/plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/next/optimizer/OptimizerTest.java
+++ b/plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/next/optimizer/OptimizerTest.java
@@ -4,7 +4,9 @@ import org.apache.commons.lang3.tuple.Pair;
import org.junit.Test;
import java.sql.SQLOutput;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.Set;
@@ -26,20 +28,35 @@ public class OptimizerTest {
public void optimizerTest() {
final List<MergeRule<TestRequest, FieldResponse>> rules = Arrays.asList(new TestMergeRule());
final List<TestRequest> requests = Arrays.asList(
- new TestRequest(10, 10),
- new TestRequest(20, 5),
- new TestRequest(15, 5)
+ new TestRequest(0, 1),
+ new TestRequest(1, 1),
+ new TestRequest(2, 1),
+ new TestRequest(3, 1),
+ new TestRequest(4, 1),
+ new TestRequest(5, 1),
+ new TestRequest(6, 1),
+ new TestRequest(7, 1)
+// new TestRequest(16, 16),
+// new TestRequest(32, 16)
);
+ final int bytesTotal = calculateSize(requests);
final Optimizer<TestRequest, FieldResponse> optimizer
= new Optimizer<>(rules);
final Set<OptimizerBatch<TestRequest, FieldResponse>> batches = optimizer.optimize(requests);
System.out.println(batches.size() + " Results have been found:");
- for (OptimizerBatch<TestRequest, FieldResponse> batch : batches) {
- System.out.println(" - " + batch.getRequests());
+ final ArrayList<OptimizerBatch<TestRequest, FieldResponse>> printBatches = new ArrayList<>(batches);
+ printBatches.sort(Comparator.comparingInt(b -> calculateSize(b.getRequests())));
+ for (OptimizerBatch<TestRequest, FieldResponse> batch : printBatches) {
+ final int bytesOptimized = calculateSize(batch.getRequests());
+ System.out.println(String.format(" - %.2f - %d - %s", (double)bytesOptimized/bytesTotal, batch.getRequests().size(), batch.getRequests()));
}
}
+ private static int calculateSize(List<TestRequest> requests) {
+ return requests.stream().map(req -> Math.max(req.length, 8)).mapToInt(value -> value).sum();
+ }
+
public static class TestRequest extends FieldRequest {