From 241233daafc717a77bf95f1e2f0bd7ad14bca571 Mon Sep 17 00:00:00 2001
From: Nils Christian Ehmke <nie@informatik.uni-kiel.de>
Date: Wed, 25 Jun 2014 12:35:42 +0200
Subject: [PATCH] Experiments

---
 .../examples/NieComparisonMethodcall.java     |  80 ++++++++++++++
 .../NieComparisonMethodcallWithPorts.java     | 101 ++++++++++++++++++
 2 files changed, 181 insertions(+)
 create mode 100644 src/test/java/teetime/variant/methodcall/examples/NieComparisonMethodcall.java
 create mode 100644 src/test/java/teetime/variant/methodcallWithPorts/examples/NieComparisonMethodcallWithPorts.java

diff --git a/src/test/java/teetime/variant/methodcall/examples/NieComparisonMethodcall.java b/src/test/java/teetime/variant/methodcall/examples/NieComparisonMethodcall.java
new file mode 100644
index 0000000..c4ac6dc
--- /dev/null
+++ b/src/test/java/teetime/variant/methodcall/examples/NieComparisonMethodcall.java
@@ -0,0 +1,80 @@
+package teetime.variant.methodcall.examples;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.junit.AfterClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+import teetime.variant.methodcall.examples.experiment01.MethodCallThoughputTimestampAnalysis1Test;
+import teetime.variant.methodcall.examples.experiment02.MethodCallThoughputTimestampAnalysis2Test;
+import teetime.variant.methodcall.examples.experiment03.MethodCallThoughputTimestampAnalysis3Test;
+import teetime.variant.methodcall.examples.experiment04.MethodCallThoughputTimestampAnalysis4Test;
+import teetime.variant.methodcall.examples.experiment05.MethodCallThoughputTimestampAnalysis5Test;
+import teetime.variant.methodcall.examples.experiment06.MethodCallThoughputTimestampAnalysis6Test;
+import teetime.variant.methodcall.examples.experiment07.MethodCallThoughputTimestampAnalysis7Test;
+import teetime.variant.methodcall.examples.experiment08.MethodCallThoughputTimestampAnalysis8Test;
+import teetime.variant.methodcall.examples.experiment12.MethodCallThoughputTimestampAnalysis12Test;
+import teetime.variant.methodcall.examples.experiment13.MethodCallThoughputTimestampAnalysis13Test;
+import test.PerformanceResult;
+import test.PerformanceTest;
+
+@RunWith(Suite.class)
+@SuiteClasses({
+	MethodCallThoughputTimestampAnalysis1Test.class,
+	MethodCallThoughputTimestampAnalysis2Test.class,
+	MethodCallThoughputTimestampAnalysis3Test.class,
+	MethodCallThoughputTimestampAnalysis4Test.class,
+	MethodCallThoughputTimestampAnalysis5Test.class,
+	MethodCallThoughputTimestampAnalysis6Test.class,
+	MethodCallThoughputTimestampAnalysis7Test.class,
+	MethodCallThoughputTimestampAnalysis8Test.class,
+	MethodCallThoughputTimestampAnalysis12Test.class,
+	MethodCallThoughputTimestampAnalysis13Test.class,
+})
+public class NieComparisonMethodcall {
+
+	@AfterClass
+	public static void doYourOneTimeTeardown() {
+		Map<String, PerformanceResult> performanceResults = PerformanceTest.measurementRepository.performanceResults;
+		for (Entry<String, PerformanceResult> entry : performanceResults.entrySet()) {
+			System.out.println("---> " + entry.getKey() + "\n" + entry.getValue());
+		}
+
+		PerformanceResult test1 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment01.MethodCallThoughputTimestampAnalysis1Test)");
+		PerformanceResult test4 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment04.MethodCallThoughputTimestampAnalysis4Test)");
+		PerformanceResult test7 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment07.MethodCallThoughputTimestampAnalysis7Test)");
+		PerformanceResult test3 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment03.MethodCallThoughputTimestampAnalysis3Test)");
+		PerformanceResult test8 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment08.MethodCallThoughputTimestampAnalysis8Test)");
+		PerformanceResult test12 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment12.MethodCallThoughputTimestampAnalysis12Test)");
+		PerformanceResult test13 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment13.MethodCallThoughputTimestampAnalysis13Test)");
+		PerformanceResult test5 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment05.MethodCallThoughputTimestampAnalysis5Test)");
+		PerformanceResult test2 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment02.MethodCallThoughputTimestampAnalysis2Test)");
+		PerformanceResult test6 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment06.MethodCallThoughputTimestampAnalysis6Test)");
+
+		assertEquals(1, (double) test4.quantiles.get(0.5) / test1.quantiles.get(0.5), 0.1);
+		assertEquals(2, (double) test7.quantiles.get(0.5) / test1.quantiles.get(0.5), 0.1);
+		assertEquals(4, (double) test3.quantiles.get(0.5) / test1.quantiles.get(0.5), 0.1);
+		assertEquals(4, (double) test8.quantiles.get(0.5) / test1.quantiles.get(0.5), 0.1);
+		assertEquals(8, (double) test12.quantiles.get(0.5) / test1.quantiles.get(0.5), 1.1);
+		assertEquals(8, (double) test13.quantiles.get(0.5) / test1.quantiles.get(0.5), 1.1);
+		assertEquals(10, (double) test5.quantiles.get(0.5) / test1.quantiles.get(0.5), 0.1);
+		assertEquals(17, (double) test2.quantiles.get(0.5) / test1.quantiles.get(0.5), 0.1);
+		assertEquals(65, (double) test6.quantiles.get(0.5) / test1.quantiles.get(0.5), 1.1);
+	}
+
+}
diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/NieComparisonMethodcallWithPorts.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/NieComparisonMethodcallWithPorts.java
new file mode 100644
index 0000000..94028b1
--- /dev/null
+++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/NieComparisonMethodcallWithPorts.java
@@ -0,0 +1,101 @@
+package teetime.variant.methodcallWithPorts.examples;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.junit.AfterClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+import teetime.variant.methodcall.examples.experiment01.MethodCallThoughputTimestampAnalysis1Test;
+import teetime.variant.methodcallWithPorts.examples.experiment09.MethodCallThoughputTimestampAnalysis9Test;
+import teetime.variant.methodcallWithPorts.examples.experiment10.MethodCallThoughputTimestampAnalysis10Test;
+import teetime.variant.methodcallWithPorts.examples.experiment11.MethodCallThoughputTimestampAnalysis11Test;
+import teetime.variant.methodcallWithPorts.examples.experiment14.MethodCallThoughputTimestampAnalysis14Test;
+import teetime.variant.methodcallWithPorts.examples.experiment15.MethodCallThoughputTimestampAnalysis15Test;
+import teetime.variant.methodcallWithPorts.examples.experiment16.MethodCallThoughputTimestampAnalysis16Test;
+import teetime.variant.methodcallWithPorts.examples.experiment17.MethodCallThoughputTimestampAnalysis17Test;
+import teetime.variant.methodcallWithPorts.examples.experiment19.MethodCallThoughputTimestampAnalysis19Test;
+import test.PerformanceResult;
+import test.PerformanceTest;
+
+@RunWith(Suite.class)
+@SuiteClasses({
+	MethodCallThoughputTimestampAnalysis1Test.class,
+	MethodCallThoughputTimestampAnalysis9Test.class,
+	MethodCallThoughputTimestampAnalysis10Test.class,
+	MethodCallThoughputTimestampAnalysis11Test.class,
+	MethodCallThoughputTimestampAnalysis14Test.class,
+	MethodCallThoughputTimestampAnalysis15Test.class,
+	MethodCallThoughputTimestampAnalysis16Test.class,
+	MethodCallThoughputTimestampAnalysis17Test.class,
+	MethodCallThoughputTimestampAnalysis19Test.class,
+})
+public class NieComparisonMethodcallWithPorts {
+
+	private static final double RESULT_TESTS_16 = 30;
+	private static final double RESULT_TESTS_19 = 70;
+
+	@AfterClass
+	public static void compareResults() {
+		Map<String, PerformanceResult> performanceResults = PerformanceTest.measurementRepository.performanceResults;
+		for (Entry<String, PerformanceResult> entry : performanceResults.entrySet()) {
+			System.out.println("---> " + entry.getKey() + "\n" + entry.getValue());
+		}
+
+		PerformanceResult test1 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcall.examples.experiment01.MethodCallThoughputTimestampAnalysis1Test)");
+		PerformanceResult test9 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcallWithPorts.examples.experiment09.MethodCallThoughputTimestampAnalysis9Test)");
+		PerformanceResult test10 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcallWithPorts.examples.experiment10.MethodCallThoughputTimestampAnalysis10Test)");
+		PerformanceResult test11 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcallWithPorts.examples.experiment11.MethodCallThoughputTimestampAnalysis11Test)");
+		PerformanceResult test14 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcallWithPorts.examples.experiment14.MethodCallThoughputTimestampAnalysis14Test)");
+		PerformanceResult test15 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcallWithPorts.examples.experiment15.MethodCallThoughputTimestampAnalysis15Test)");
+		PerformanceResult test16a = performanceResults
+				.get("testWithManyObjectsAnd1Thread(teetime.variant.methodcallWithPorts.examples.experiment16.MethodCallThoughputTimestampAnalysis16Test)");
+		PerformanceResult test16b = performanceResults
+				.get("testWithManyObjectsAnd2Threads(teetime.variant.methodcallWithPorts.examples.experiment16.MethodCallThoughputTimestampAnalysis16Test)");
+		PerformanceResult test16c = performanceResults
+				.get("testWithManyObjectsAnd4Threads(teetime.variant.methodcallWithPorts.examples.experiment16.MethodCallThoughputTimestampAnalysis16Test)");
+		PerformanceResult test17 = performanceResults
+				.get("testWithManyObjects(teetime.variant.methodcallWithPorts.examples.experiment17.MethodCallThoughputTimestampAnalysis17Test)");
+		PerformanceResult test19a = performanceResults
+				.get("testWithManyObjectsAnd1Thread(teetime.variant.methodcallWithPorts.examples.experiment19.MethodCallThoughputTimestampAnalysis19Test)");
+		PerformanceResult test19b = performanceResults
+				.get("testWithManyObjectsAnd2Threads(teetime.variant.methodcallWithPorts.examples.experiment19.MethodCallThoughputTimestampAnalysis19Test)");
+		PerformanceResult test19c = performanceResults
+				.get("testWithManyObjectsAnd4Threads(teetime.variant.methodcallWithPorts.examples.experiment19.MethodCallThoughputTimestampAnalysis19Test)");
+
+		assertEquals(67, (double) test14.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
+		assertEquals(14, (double) test10.quantiles.get(0.5) / test1.quantiles.get(0.5), 2.1);
+		assertEquals(39, (double) test11.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1);
+		assertEquals(35, (double) test9.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
+		assertEquals(58, (double) test15.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1);
+
+		// below results vary too much, possibly due to the OS' scheduler
+		// assertEquals(RESULT_TESTS_16, (double) test16a.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
+		// assertEquals(RESULT_TESTS_16, (double) test16b.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
+		// assertEquals(RESULT_TESTS_16, (double) test16c.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
+		//
+		// assertEquals(RESULT_TESTS_19, (double) test19a.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
+		// assertEquals(RESULT_TESTS_19, (double) test19b.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
+		// assertEquals(RESULT_TESTS_19, (double) test19c.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1);
+
+		assertEquals(56, (double) test17.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1);
+
+		// check speedup
+		assertEquals(2, (double) test16a.overallDurationInNs / test16b.overallDurationInNs, 0.2);
+		assertEquals(3.7, (double) test16a.overallDurationInNs / test16c.overallDurationInNs, 0.2);
+
+		assertEquals(2, (double) test19a.overallDurationInNs / test19b.overallDurationInNs, 0.2);
+		assertEquals(3.7, (double) test19a.overallDurationInNs / test19c.overallDurationInNs, 0.2);
+	}
+
+}
-- 
GitLab