From 0e631b51c47dfecae285fd14f50a346e371a75d8 Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Fri, 22 Jul 2022 16:46:59 +0200
Subject: [PATCH] add percentage skipped

---
 .../de/tudresden/inf/st/placeB/UtilB.java     | 28 ++++++++++++++++---
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/ros3rag.placeB/src/main/java/de/tudresden/inf/st/placeB/UtilB.java b/ros3rag.placeB/src/main/java/de/tudresden/inf/st/placeB/UtilB.java
index fffa2f6..a7a9beb 100644
--- a/ros3rag.placeB/src/main/java/de/tudresden/inf/st/placeB/UtilB.java
+++ b/ros3rag.placeB/src/main/java/de/tudresden/inf/st/placeB/UtilB.java
@@ -1,9 +1,7 @@
 package de.tudresden.inf.st.placeB;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.protobuf.util.JsonFormat;
 import de.tudresden.inf.st.ceti.Object;
-import de.tudresden.inf.st.ceti.Reachability;
 import de.tudresden.inf.st.placeB.ast.*;
 import de.tudresden.inf.st.ros3rag.common.RegionConfiguration;
 import de.tudresden.inf.st.ros3rag.common.RegionConfiguration.RegionDefinition;
@@ -13,7 +11,6 @@ import org.apache.logging.log4j.Logger;
 
 import java.io.File;
 import java.io.IOException;
-import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.List;
 import java.util.function.Function;
@@ -133,10 +130,33 @@ public class UtilB {
     sb.append("Operations: ").append(model.diffToOperations().prettyPrint(Operation::prettyPrint)).append("\n");
     sb.append("Next operation: ").append(model.getNextOperation().prettyPrint()).append("\n");
     sb.append("Operation History: ").append(model.getExecutedOperations().prettyPrint(Operation::prettyPrint)).append("\n");
-    sb.append("EvaluationCounter:\n").append(model.ragconnectEvaluationCounterSummary());
+    String summary = model.ragconnectEvaluationCounterSummary();
+    sb.append("EvaluationCounter:\n").append(summary);
+    sb.append("% skipped: ").append(percentageSkipped(summary)).append("\n");
     return sb.toString();
   }
 
+  static double percentageSkipped(String summary) {
+    int sumCall = 0;
+    int sumSkipped = 0;
+    try {
+      for (String line : summary.split("\n")) {
+        String[] tokens = line.split(",");
+        if (tokens.length == 0 || tokens[0].equals("parentTypeName")) {
+          continue;
+        }
+        sumCall += Integer.parseInt(tokens[4]);
+        sumSkipped += Integer.parseInt(tokens[6]);
+      }
+    } catch (NumberFormatException e) {
+      logger.catching(e);
+    }
+    if (sumCall == 0) {
+      return 0;
+    }
+    return sumSkipped * 100.0 / sumCall;
+  }
+
   static Scene convert(de.tudresden.inf.st.ceti.Scene scene) throws Exception {
     return new ExposingASTNode().exposed_apply_ConvertScene(scene);
   }
-- 
GitLab