diff --git a/src/main/java/teetime/util/StatisticsUtil.java b/src/main/java/teetime/util/StatisticsUtil.java index e1dd1fff410f3cc99bb16862ecc297cfd91abf60..812bf767eb631b92e9b26ed05a8f7353e97c880e 100644 --- a/src/main/java/teetime/util/StatisticsUtil.java +++ b/src/main/java/teetime/util/StatisticsUtil.java @@ -24,6 +24,7 @@ import java.util.Map.Entry; import java.util.concurrent.TimeUnit; import teetime.variant.explicitScheduling.examples.throughput.TimestampObject; +import test.PerformanceResult; /** * @author Christian Wulf @@ -43,7 +44,9 @@ public class StatisticsUtil { } - public static void printStatistics(final long overallDurationInNs, final List<TimestampObject> timestampObjects) { + public static PerformanceResult printStatistics(final long overallDurationInNs, final List<TimestampObject> timestampObjects) { + PerformanceResult performanceResult = new PerformanceResult(); + System.out.println("Duration: " + TimeUnit.NANOSECONDS.toMillis(overallDurationInNs) + " ms"); final List<Long> sortedDurationsInNs = new ArrayList<Long>(timestampObjects.size() / 2); @@ -56,18 +59,28 @@ public class StatisticsUtil { sumInNs += durationInNs; } + performanceResult.sumInNs = sumInNs; + final Map<Double, Long> quintileValues = StatisticsUtil.calculateQuintiles(sortedDurationsInNs); + performanceResult.quantiles = quintileValues; + final long avgDurInNs = sumInNs / (timestampObjects.size() / 2); System.out.println("avg duration: " + TimeUnit.NANOSECONDS.toMicros(avgDurInNs) + " µs"); + performanceResult.avgDurInNs = avgDurInNs; + printQuintiles(quintileValues); final long confidenceWidthInNs = StatisticsUtil.calculateConfidenceWidth(sortedDurationsInNs, avgDurInNs); + performanceResult.confidenceWidthInNs = confidenceWidthInNs; + System.out.println("confidenceWidth: " + confidenceWidthInNs + " ns"); System.out.println("[" + TimeUnit.NANOSECONDS.toMicros(avgDurInNs - confidenceWidthInNs) + " µs, " + TimeUnit.NANOSECONDS.toMicros(avgDurInNs + confidenceWidthInNs) + " µs]"); + + return performanceResult; } public static void printQuintiles(final Map<Double, Long> quintileValues) { diff --git a/src/test/java/test/PerformanceResult.java b/src/test/java/test/PerformanceResult.java index c4690fa5cdbbb89a26cc89537b0336b4e33e11ea..a6a5b1a7902b79a95cc0b41a8d43c05f2703f2f4 100644 --- a/src/test/java/test/PerformanceResult.java +++ b/src/test/java/test/PerformanceResult.java @@ -1,5 +1,12 @@ package test; +import java.util.Map; + public class PerformanceResult { + public long sumInNs; + public Map<Double, Long> quantiles; + public long avgDurInNs; + public long confidenceWidthInNs; + }