From 1aaed454a576758f99004ccc80c6741896361eb3 Mon Sep 17 00:00:00 2001
From: Christian Wulf <chw@informatik.uni-kiel.de>
Date: Mon, 30 Jun 2014 08:22:08 +0200
Subject: [PATCH] improved performance of InstanceOfFilter

---
 .../methodcallWithPorts/stage/InstanceOfFilter.java  |  3 ++-
 .../TraceReconstructionFilter.java                   | 12 ++++++------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/main/java/teetime/variant/methodcallWithPorts/stage/InstanceOfFilter.java b/src/main/java/teetime/variant/methodcallWithPorts/stage/InstanceOfFilter.java
index a23da017..a205d20b 100644
--- a/src/main/java/teetime/variant/methodcallWithPorts/stage/InstanceOfFilter.java
+++ b/src/main/java/teetime/variant/methodcallWithPorts/stage/InstanceOfFilter.java
@@ -18,10 +18,11 @@ public class InstanceOfFilter<I, O> extends ConsumerStage<I, O> {
 		this.type = type;
 	}
 
+	@SuppressWarnings("unchecked")
 	@Override
 	protected void execute5(final I element) {
 		if (this.type.isInstance(element)) {
-			this.send(this.type.cast(element));
+			this.send((O) element);
 		} else { // swallow up the element
 			if (this.logger.isDebugEnabled()) {
 				this.logger.debug("element is not an instance of " + this.type.getName() + ", but of " + element.getClass());
diff --git a/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/traceReconstruction/TraceReconstructionFilter.java b/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/traceReconstruction/TraceReconstructionFilter.java
index aa307ce4..b2516a07 100644
--- a/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/traceReconstruction/TraceReconstructionFilter.java
+++ b/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/traceReconstruction/TraceReconstructionFilter.java
@@ -40,7 +40,7 @@ public class TraceReconstructionFilter extends ConsumerStage<IFlowRecord, TraceE
 	private long maxTraceTimeout = Long.MAX_VALUE;
 	private long maxEncounteredLoggingTimestamp = -1;
 
-	private static final Map<Long, TraceBuffer> traceId2trace = new HashMapWithDefault<Long, TraceBuffer>(new TraceBuffer());
+	private final Map<Long, TraceBuffer> traceId2trace = new HashMapWithDefault<Long, TraceBuffer>(new TraceBuffer());
 
 	@Override
 	protected void execute5(final IFlowRecord element) {
@@ -51,9 +51,9 @@ public class TraceReconstructionFilter extends ConsumerStage<IFlowRecord, TraceE
 	}
 
 	private void putIfFinished(final Long traceId) {
-		final TraceBuffer traceBuffer = TraceReconstructionFilter.traceId2trace.get(traceId);
+		final TraceBuffer traceBuffer = this.traceId2trace.get(traceId);
 		if (traceBuffer.isFinished()) {
-			TraceReconstructionFilter.traceId2trace.remove(traceId);
+			this.traceId2trace.remove(traceId);
 			this.put(traceBuffer);
 		}
 	}
@@ -62,12 +62,12 @@ public class TraceReconstructionFilter extends ConsumerStage<IFlowRecord, TraceE
 		Long traceId = null;
 		if (record instanceof TraceMetadata) {
 			traceId = ((TraceMetadata) record).getTraceId();
-			final TraceBuffer traceBuffer = TraceReconstructionFilter.traceId2trace.get(traceId);
+			final TraceBuffer traceBuffer = this.traceId2trace.get(traceId);
 
 			traceBuffer.setTrace((TraceMetadata) record);
 		} else if (record instanceof AbstractTraceEvent) {
 			traceId = ((AbstractTraceEvent) record).getTraceId();
-			final TraceBuffer traceBuffer = TraceReconstructionFilter.traceId2trace.get(traceId);
+			final TraceBuffer traceBuffer = this.traceId2trace.get(traceId);
 
 			traceBuffer.insertEvent((AbstractTraceEvent) record);
 		}
@@ -77,7 +77,7 @@ public class TraceReconstructionFilter extends ConsumerStage<IFlowRecord, TraceE
 
 	@Override
 	public void onIsPipelineHead() {
-		Iterator<TraceBuffer> iterator = TraceReconstructionFilter.traceId2trace.values().iterator();
+		Iterator<TraceBuffer> iterator = this.traceId2trace.values().iterator();
 		while (iterator.hasNext()) {
 			TraceBuffer traceBuffer = iterator.next();
 			this.put(traceBuffer);
-- 
GitLab