trying to improve performance by making RaceDefinition.getCompetitors().contains(...) faster using LinkedHashSet

This commit is contained in:
Axel Uhl committed 2012-06-17 01:58:49 +02:00
1 parent 15edc88887
commit 02cb51fde6
2 files changed
+24 -14

No files matched your search

@@ -59,18 +59,22 @@ public abstract class AbstractRaceColumn implements RaceColumn {
@Override
public void setTrackedRace(Fleet fleet, TrackedRace trackedRace) {
TrackedRace previouslyLinkedRace = this.trackedRaces.get(fleet);
if (trackedRace == null) {
setRaceIdentifier(fleet, null);
this.trackedRaces.remove(fleet);
} else {
this.trackedRaces.put(fleet, trackedRace);
this.setRaceIdentifier(fleet, trackedRace.getRaceIdentifier());
}
if (previouslyLinkedRace != null) {
notifyListenersAboutTrackedRaceUnlinked(fleet, previouslyLinkedRace);
}
if (trackedRace != null) {
notifyListenersAboutTrackedRaceLinked(fleet, trackedRace);
if (trackedRace != previouslyLinkedRace) {
synchronized (this) {
if (trackedRace == null) {
setRaceIdentifier(fleet, null);
this.trackedRaces.remove(fleet);
} else {
this.trackedRaces.put(fleet, trackedRace);
this.setRaceIdentifier(fleet, trackedRace.getRaceIdentifier());
}
}
if (previouslyLinkedRace != null) {
notifyListenersAboutTrackedRaceUnlinked(fleet, previouslyLinkedRace);
}
if (trackedRace != null) {
notifyListenersAboutTrackedRaceLinked(fleet, trackedRace);
}
}
}
@@ -104,7 +108,7 @@ public abstract class AbstractRaceColumn implements RaceColumn {
}
@Override
public void releaseTrackedRace(Fleet fleet) {
public synchronized void releaseTrackedRace(Fleet fleet) {
trackedRaces.remove(fleet);
}
@@ -1,6 +1,8 @@
package com.sap.sailing.domain.base.impl;
import java.io.Serializable;
import java.util.LinkedHashSet;
import java.util.Set;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.domain.base.Competitor;
@@ -22,7 +24,11 @@ public class RaceDefinitionImpl extends NamedImpl implements RaceDefinition {
public RaceDefinitionImpl(String name, Course course, BoatClass boatClass, Iterable<Competitor> competitors, Serializable id) {
super(name);
this.course = course;
this.competitors = competitors;
Set<Competitor> competitorsAsLinkedHashSet = new LinkedHashSet<Competitor>();
for (Competitor competitor : competitors) {
competitorsAsLinkedHashSet.add(competitor);
}
this.competitors = competitorsAsLinkedHashSet;
this.boatClass = boatClass;
this.id = id;
}