diff --git a/src/main/java/teetime/variant/methodcallWithPorts/framework/core/pipe/SpScPipe.java b/src/main/java/teetime/variant/methodcallWithPorts/framework/core/pipe/SpScPipe.java index a805089e6805be089657d71a33bd9626124ee20e..b5d337de8fa127d6666c73604dbe3cd03d2c89fc 100644 --- a/src/main/java/teetime/variant/methodcallWithPorts/framework/core/pipe/SpScPipe.java +++ b/src/main/java/teetime/variant/methodcallWithPorts/framework/core/pipe/SpScPipe.java @@ -13,7 +13,7 @@ public class SpScPipe<T> extends AbstractPipe<T> { private int maxSize; private final AtomicReference<Signal> signal = new AtomicReference<Signal>(); - private SpScPipe(final int capacity) { + public SpScPipe(final int capacity) { this.queue = new FFBufferOrdered3<T>(capacity); } diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/ChwComparisonMethodcallWithPorts.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/ChwComparisonMethodcallWithPorts.java index 60453dad644de2c7e28a6aaa0c188d238121b881..118f667e03f85f2d4aaeee00e34ef7eda3308cd8 100644 --- a/src/test/java/teetime/variant/methodcallWithPorts/examples/ChwComparisonMethodcallWithPorts.java +++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/ChwComparisonMethodcallWithPorts.java @@ -73,6 +73,20 @@ public class ChwComparisonMethodcallWithPorts { PerformanceResult test19c = performanceResults .get("testWithManyObjectsAnd4Threads(teetime.variant.methodcallWithPorts.examples.experiment19.MethodCallThoughputTimestampAnalysis19Test)"); + double value14 = (double) test14.quantiles.get(0.5) / test1.quantiles.get(0.5); + double value10 = (double) test10.quantiles.get(0.5) / test1.quantiles.get(0.5); + double value11 = (double) test11.quantiles.get(0.5) / test1.quantiles.get(0.5); + double value9 = (double) test9.quantiles.get(0.5) / test1.quantiles.get(0.5); + double value15 = (double) test15.quantiles.get(0.5) / test1.quantiles.get(0.5); + double value17 = (double) test17.quantiles.get(0.5) / test1.quantiles.get(0.5); + + System.out.println("value14: " + value14); + System.out.println("value10: " + value10); + System.out.println("value11: " + value11); + System.out.println("value9: " + value9); + System.out.println("value15: " + value15); + System.out.println("value17: " + value17); + // until 25.06.2014 (incl.) // assertEquals(60, (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); @@ -82,12 +96,20 @@ public class ChwComparisonMethodcallWithPorts { // assertEquals(39, (double) test17.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1); // since 26.06.2014 (incl.) - assertEquals(76, (double) test14.quantiles.get(0.5) / test1.quantiles.get(0.5), 5.1); // +16 - assertEquals(26, (double) test10.quantiles.get(0.5) / test1.quantiles.get(0.5), 2.1); // +14 - assertEquals(44, (double) test11.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1); // +12 - assertEquals(36, (double) test9.quantiles.get(0.5) / test1.quantiles.get(0.5), 2.1); // +14 - assertEquals(44, (double) test15.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1); // +0 - assertEquals(53, (double) test17.quantiles.get(0.5) / test1.quantiles.get(0.5), 4.1); // +14 + // assertEquals(76, value14, 5.1); // +16 + // assertEquals(26, value10, 2.1); // +14 + // assertEquals(44, value11, 4.1); // +12 + // assertEquals(36, value9, 2.1); // +14 + // assertEquals(44, value15, 4.1); // +0 + // assertEquals(53, value17, 4.1); // +14 + + // since 04.07.2014 (incl.) + assertEquals(86, value14, 5.1); // +16 + assertEquals(26, value10, 2.1); // +0 + assertEquals(37, value11, 4.1); // -7 + assertEquals(42, value9, 2.1); // +6 + assertEquals(44, value15, 4.1); // +0 + assertEquals(53, value17, 4.1); // +0 // 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); diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment16/MethodCallThroughputAnalysis16.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment16/MethodCallThroughputAnalysis16.java index 7ccdb55d20772860fafe1c3ee30701560c3d98b4..da66f567c6c3cc20a8717e6d81e73dfc7ce53f8a 100644 --- a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment16/MethodCallThroughputAnalysis16.java +++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment16/MethodCallThroughputAnalysis16.java @@ -62,7 +62,7 @@ public class MethodCallThroughputAnalysis16 extends Analysis { public void init() { super.init(); Pipeline<Void, TimestampObject> producerPipeline = this.buildProducerPipeline(this.numInputObjects, this.inputObjectCreator); - this.producerThread = new Thread(new RunnableStage(producerPipeline)); + this.producerThread = new Thread(new RunnableStage<Void>(producerPipeline)); this.numWorkerThreads = Math.min(NUM_WORKER_THREADS, this.numWorkerThreads); @@ -71,8 +71,8 @@ public class MethodCallThroughputAnalysis16 extends Analysis { List<TimestampObject> resultList = new ArrayList<TimestampObject>(this.numInputObjects); this.timestampObjectsList.add(resultList); - Runnable workerRunnable = this.buildPipeline(producerPipeline, resultList); - this.workerThreads[i] = new Thread(workerRunnable); + Pipeline<TimestampObject, Void> workerPipeline = this.buildPipeline(producerPipeline, resultList); + this.workerThreads[i] = new Thread(new RunnableStage<TimestampObject>(workerPipeline)); } // this.producerThread.start(); @@ -102,7 +102,7 @@ public class MethodCallThroughputAnalysis16 extends Analysis { * @param numNoopFilters * @since 1.10 */ - private Runnable buildPipeline(final StageWithPort<Void, TimestampObject> previousStage, final List<TimestampObject> timestampObjects) { + private Pipeline<TimestampObject, Void> buildPipeline(final StageWithPort<Void, TimestampObject> previousStage, final List<TimestampObject> timestampObjects) { Relay<TimestampObject> relay = new Relay<TimestampObject>(); @SuppressWarnings("unchecked") final NoopFilter<TimestampObject>[] noopFilters = new NoopFilter[this.numNoopFilters]; @@ -132,7 +132,7 @@ public class MethodCallThroughputAnalysis16 extends Analysis { SingleElementPipe.connect(noopFilters[noopFilters.length - 1].getOutputPort(), stopTimestampFilter.getInputPort()); SingleElementPipe.connect(stopTimestampFilter.getOutputPort(), collectorSink.getInputPort()); - return new RunnableStage(pipeline); + return pipeline; } @Override diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment17/MethodCallThroughputAnalysis17.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment17/MethodCallThroughputAnalysis17.java index f942090813143f9cf83defb74ed16d6e794d3790..16954936b3b13761d83052e27664bce0c7467273 100644 --- a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment17/MethodCallThroughputAnalysis17.java +++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment17/MethodCallThroughputAnalysis17.java @@ -61,7 +61,7 @@ public class MethodCallThroughputAnalysis17 extends Analysis { @Override public void init() { final Pipeline<Void, TimestampObject> producerPipeline = this.buildProducerPipeline(this.numInputObjects, this.inputObjectCreator); - this.producerThread = new Thread(new RunnableStage(producerPipeline)); + this.producerThread = new Thread(new RunnableStage<Void>(producerPipeline)); int numWorkerThreads = Math.min(NUM_WORKER_THREADS, 1); // only for testing purpose @@ -95,7 +95,7 @@ public class MethodCallThroughputAnalysis17 extends Analysis { // this.producerThread.start(); // this.producerThread.run(); - new RunnableStage(producerPipeline).run(); + new RunnableStage<Void>(producerPipeline).run(); // try { // this.producerThread.join(); @@ -155,7 +155,7 @@ public class MethodCallThroughputAnalysis17 extends Analysis { pipeline.addIntermediateStage(stopTimestampFilter); pipeline.setLastStage(collectorSink); - SpScPipe.connect(null, relay.getInputPort(), SPSC_INITIAL_CAPACITY); + relay.getInputPort().setPipe(new SpScPipe<TimestampObject>(SPSC_INITIAL_CAPACITY)); IPipe<TimestampObject> startPipe = relay.getInputPort().getPipe(); for (int i = 0; i < this.numInputObjects; i++) { startPipe.add(this.inputObjectCreator.create());