diff --git a/results/overhead-findings.txt b/results/overhead-findings.txt new file mode 100644 index 0000000000000000000000000000000000000000..888c4d3e9404787aba0188245325c79c45eae829 --- /dev/null +++ b/results/overhead-findings.txt @@ -0,0 +1,9 @@ +[increases overhead] +-for loop with list vs. array (due to new instantiation of iterator) +-for loop with super type vs. concrete type (due to less JIT optimization possibilities) +- + +[irrelevant w.r.t. overhead] +-foreach vs. index-based iteration +-iterative vs. recursive execution +- \ No newline at end of file diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis1.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis1.java index f85dea6775b32b6c6569b0ac70b8be11a902e529..e99550676199947c63d44d805f8bb0ec56ba911e 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis1.java +++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis1.java @@ -19,6 +19,11 @@ import java.util.List; import java.util.concurrent.Callable; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.stage.CollectorSink; +import teetime.examples.throughput.methodcall.stage.NoopFilter; +import teetime.examples.throughput.methodcall.stage.ObjectProducer; +import teetime.examples.throughput.methodcall.stage.StartTimestampFilter; +import teetime.examples.throughput.methodcall.stage.StopTimestampFilter; import teetime.framework.core.Analysis; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis2.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis2.java index 330bda0b4eae85e18a37860b7a0c8f617c21e9f8..fb0cf885ba5af9b7eca5d8097bcd3fbc73bcd09e 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis2.java +++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis2.java @@ -19,6 +19,12 @@ import java.util.List; import java.util.concurrent.Callable; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.stage.CollectorSink; +import teetime.examples.throughput.methodcall.stage.NoopFilter; +import teetime.examples.throughput.methodcall.stage.ObjectProducer; +import teetime.examples.throughput.methodcall.stage.Pipeline; +import teetime.examples.throughput.methodcall.stage.StartTimestampFilter; +import teetime.examples.throughput.methodcall.stage.StopTimestampFilter; import teetime.framework.core.Analysis; import teetime.util.list.CommittableQueue; import teetime.util.list.CommittableResizableArrayQueue; diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis3.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis3.java index 29b7a0ab53511842a483b9bffae34ddd0c8f27b5..e40e3bb5f6d3e7a0de7cc0fa364480d6674f07b0 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis3.java +++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis3.java @@ -21,6 +21,11 @@ import java.util.List; import java.util.concurrent.Callable; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.stage.CollectorSink; +import teetime.examples.throughput.methodcall.stage.NoopFilter; +import teetime.examples.throughput.methodcall.stage.ObjectProducer; +import teetime.examples.throughput.methodcall.stage.StartTimestampFilter; +import teetime.examples.throughput.methodcall.stage.StopTimestampFilter; import teetime.framework.core.Analysis; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis4.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis4.java index eaf0c945dd22ae8dc7fe72861bd8039dc5e55a3a..f60c083801573fbf8147402f5b35dbf11ce72339 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis4.java +++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis4.java @@ -21,6 +21,11 @@ import java.util.List; import java.util.concurrent.Callable; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.stage.CollectorSink; +import teetime.examples.throughput.methodcall.stage.NoopFilter; +import teetime.examples.throughput.methodcall.stage.ObjectProducer; +import teetime.examples.throughput.methodcall.stage.StartTimestampFilter; +import teetime.examples.throughput.methodcall.stage.StopTimestampFilter; import teetime.framework.core.Analysis; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis5.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis5.java index 394e28a6854c26f2a21819dfaaf36c1781f84c2b..ae54e4b4730fdca736f80af232ab829069ab1606 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis5.java +++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis5.java @@ -21,6 +21,11 @@ import java.util.List; import java.util.concurrent.Callable; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.stage.CollectorSink; +import teetime.examples.throughput.methodcall.stage.NoopFilter; +import teetime.examples.throughput.methodcall.stage.ObjectProducer; +import teetime.examples.throughput.methodcall.stage.StartTimestampFilter; +import teetime.examples.throughput.methodcall.stage.StopTimestampFilter; import teetime.framework.core.Analysis; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis6.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis6.java index 2b74c99a09b5624e6a96a83ab052db3f75b6d2aa..ee056d28ea06fc9ce6b2e7f4db5e5454e394620f 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis6.java +++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis6.java @@ -21,6 +21,11 @@ import java.util.List; import java.util.concurrent.Callable; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.stage.CollectorSink; +import teetime.examples.throughput.methodcall.stage.NoopFilter; +import teetime.examples.throughput.methodcall.stage.ObjectProducer; +import teetime.examples.throughput.methodcall.stage.StartTimestampFilter; +import teetime.examples.throughput.methodcall.stage.StopTimestampFilter; import teetime.framework.core.Analysis; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis7.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis7.java index b9e4060e639204e72c3f8572852670de449d009e..7f865f5a8c16c0a8e56d2ea7346b4efdf1d09fba 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis7.java +++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis7.java @@ -21,6 +21,11 @@ import java.util.List; import java.util.concurrent.Callable; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.stage.CollectorSink; +import teetime.examples.throughput.methodcall.stage.NoopFilter; +import teetime.examples.throughput.methodcall.stage.ObjectProducer; +import teetime.examples.throughput.methodcall.stage.StartTimestampFilter; +import teetime.examples.throughput.methodcall.stage.StopTimestampFilter; import teetime.framework.core.Analysis; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis8.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis8.java index 7c8fecc8518fd04f1ecd07cbe0b632a816852295..7f458284cade9b127f02209f2c3c2f76d9164e1a 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis8.java +++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis8.java @@ -21,6 +21,11 @@ import java.util.List; import java.util.concurrent.Callable; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.stage.CollectorSink; +import teetime.examples.throughput.methodcall.stage.NoopFilter; +import teetime.examples.throughput.methodcall.stage.ObjectProducer; +import teetime.examples.throughput.methodcall.stage.StartTimestampFilter; +import teetime.examples.throughput.methodcall.stage.StopTimestampFilter; import teetime.framework.core.Analysis; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis9.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis9.java index 3bb16df843bd4cee0797375f7c4f95cdc60d817a..1e533252ed9d5d1ae185b8af0692e12a6eca37d6 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis9.java +++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis9.java @@ -19,6 +19,12 @@ import java.util.List; import java.util.concurrent.Callable; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.stage.CollectorSink; +import teetime.examples.throughput.methodcall.stage.NoopFilter; +import teetime.examples.throughput.methodcall.stage.ObjectProducer; +import teetime.examples.throughput.methodcall.stage.Pipeline; +import teetime.examples.throughput.methodcall.stage.StartTimestampFilter; +import teetime.examples.throughput.methodcall.stage.StopTimestampFilter; import teetime.framework.core.Analysis; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/CollectorSink.java b/src/test/java/teetime/examples/throughput/methodcall/stage/CollectorSink.java similarity index 94% rename from src/test/java/teetime/examples/throughput/methodcall/CollectorSink.java rename to src/test/java/teetime/examples/throughput/methodcall/stage/CollectorSink.java index 90fefc3a21292e4509a5495dacb0283d7e2fffb9..77a2ef04c72bc41538d4b6628fd1dd6afec77f2d 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/CollectorSink.java +++ b/src/test/java/teetime/examples/throughput/methodcall/stage/CollectorSink.java @@ -13,10 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. ***************************************************************************/ -package teetime.examples.throughput.methodcall; +package teetime.examples.throughput.methodcall.stage; import java.util.List; +import teetime.examples.throughput.methodcall.ConsumerStage; import teetime.util.list.CommittableQueue; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/NoopFilter.java b/src/test/java/teetime/examples/throughput/methodcall/stage/NoopFilter.java similarity index 88% rename from src/test/java/teetime/examples/throughput/methodcall/NoopFilter.java rename to src/test/java/teetime/examples/throughput/methodcall/stage/NoopFilter.java index 17d1abba174ea3ea9282c978364b3d111115a787..7fdf98b2bca1ab6f0149be7222429d2cd01c1122 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/NoopFilter.java +++ b/src/test/java/teetime/examples/throughput/methodcall/stage/NoopFilter.java @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. ***************************************************************************/ -package teetime.examples.throughput.methodcall; +package teetime.examples.throughput.methodcall.stage; +import teetime.examples.throughput.methodcall.ConsumerStage; import teetime.util.list.CommittableQueue; /** @@ -44,7 +45,7 @@ public class NoopFilter<T> extends ConsumerStage<T, T> { @Override protected void execute5(final T element) { - this.send(element); + this.send(element); // "send" calls the next stage and so on } } diff --git a/src/test/java/teetime/examples/throughput/methodcall/ObjectProducer.java b/src/test/java/teetime/examples/throughput/methodcall/stage/ObjectProducer.java similarity index 96% rename from src/test/java/teetime/examples/throughput/methodcall/ObjectProducer.java rename to src/test/java/teetime/examples/throughput/methodcall/stage/ObjectProducer.java index deeb0df7155cb07f6785bffe0741a4e021239cd5..d6093bbe0806d26ceb1614f0ae244908be8ae0f1 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/ObjectProducer.java +++ b/src/test/java/teetime/examples/throughput/methodcall/stage/ObjectProducer.java @@ -13,10 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. ***************************************************************************/ -package teetime.examples.throughput.methodcall; +package teetime.examples.throughput.methodcall.stage; import java.util.concurrent.Callable; +import teetime.examples.throughput.methodcall.ProducerStage; import teetime.util.list.CommittableQueue; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/Pipeline.java b/src/test/java/teetime/examples/throughput/methodcall/stage/Pipeline.java similarity index 87% rename from src/test/java/teetime/examples/throughput/methodcall/Pipeline.java rename to src/test/java/teetime/examples/throughput/methodcall/stage/Pipeline.java index 82dfe6bf7fc6efe65703298e06b727dedb7179c2..23c63395f8b552f4c9d8b07d061684e8ccea259e 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/Pipeline.java +++ b/src/test/java/teetime/examples/throughput/methodcall/stage/Pipeline.java @@ -1,9 +1,15 @@ -package teetime.examples.throughput.methodcall; +package teetime.examples.throughput.methodcall.stage; import java.util.Arrays; import java.util.LinkedList; import java.util.List; +import teetime.examples.throughput.methodcall.InputPort; +import teetime.examples.throughput.methodcall.OnDisableListener; +import teetime.examples.throughput.methodcall.OutputPort; +import teetime.examples.throughput.methodcall.SchedulingInformation; +import teetime.examples.throughput.methodcall.Stage; +import teetime.examples.throughput.methodcall.StageWithPort; import teetime.util.list.CommittableQueue; public class Pipeline<I, O> implements StageWithPort<I, O>, OnDisableListener { @@ -22,19 +28,19 @@ public class Pipeline<I, O> implements StageWithPort<I, O>, OnDisableListener { private boolean reschedulable; - void setFirstStage(final StageWithPort<I, ?> stage) { + public void setFirstStage(final StageWithPort<I, ?> stage) { this.firstStage = stage; } - void addIntermediateStages(final StageWithPort... stages) { + public void addIntermediateStages(final StageWithPort... stages) { this.intermediateStages.addAll(Arrays.asList(stages)); } - void addIntermediateStage(final StageWithPort stage) { + public void addIntermediateStage(final StageWithPort stage) { this.intermediateStages.add(stage); } - void setLastStage(final StageWithPort<?, O> stage) { + public void setLastStage(final StageWithPort<?, O> stage) { this.lastStage = stage; } @@ -66,7 +72,7 @@ public class Pipeline<I, O> implements StageWithPort<I, O>, OnDisableListener { this.setReschedulable(this.stages[0].isReschedulable()); } - void onStart() { + public void onStart() { // Pipe pipe = new Pipe(); // this.outputPort.pipe = pipe; // this.firstStage.getInputPort().pipe = pipe; diff --git a/src/test/java/teetime/examples/throughput/methodcall/StartTimestampFilter.java b/src/test/java/teetime/examples/throughput/methodcall/stage/StartTimestampFilter.java similarity index 93% rename from src/test/java/teetime/examples/throughput/methodcall/StartTimestampFilter.java rename to src/test/java/teetime/examples/throughput/methodcall/stage/StartTimestampFilter.java index d4d6d5a7b45e6bdfaaf406305cdcdb843d992367..fdcc6d44c062bc501698c440d5db48f59f73ebc9 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/StartTimestampFilter.java +++ b/src/test/java/teetime/examples/throughput/methodcall/stage/StartTimestampFilter.java @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. ***************************************************************************/ -package teetime.examples.throughput.methodcall; +package teetime.examples.throughput.methodcall.stage; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.ConsumerStage; import teetime.util.list.CommittableQueue; /** diff --git a/src/test/java/teetime/examples/throughput/methodcall/StopTimestampFilter.java b/src/test/java/teetime/examples/throughput/methodcall/stage/StopTimestampFilter.java similarity index 93% rename from src/test/java/teetime/examples/throughput/methodcall/StopTimestampFilter.java rename to src/test/java/teetime/examples/throughput/methodcall/stage/StopTimestampFilter.java index 78c333cdf78087eaa824cb7daeda56ea5162d40f..0dfd5adced75c402b44fbc31635511bfba656e26 100644 --- a/src/test/java/teetime/examples/throughput/methodcall/StopTimestampFilter.java +++ b/src/test/java/teetime/examples/throughput/methodcall/stage/StopTimestampFilter.java @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. ***************************************************************************/ -package teetime.examples.throughput.methodcall; +package teetime.examples.throughput.methodcall.stage; import teetime.examples.throughput.TimestampObject; +import teetime.examples.throughput.methodcall.ConsumerStage; import teetime.util.list.CommittableQueue; /**