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 0000000000000000000000000000000000000000..c4ac6dc7450a324201b9c233c3532a02f9a06762 --- /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 0000000000000000000000000000000000000000..94028b1acf57dfd3a7c646d8c342bdc8368cb7b0 --- /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); + } + +}