mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-04 19:33:52 +00:00
improved null-value cache in estimated wind track by duplicating into a HashSet for fast contains checks
This commit is contained in:
1 parent
a2311c1a51
commit
66596a01e3
2 files changed
+20
-5
No files matched your search
+17
-2
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.domain.tracking.impl;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.NavigableSet;
|
||||
|
||||
@@ -53,6 +54,11 @@ public class TrackBasedEstimationWindTrackImpl extends WindTrackImpl implements
|
||||
private final TrackedRace trackedRace;
|
||||
|
||||
private final NavigableSet<TimePoint> timePointsWithCachedNullResult;
|
||||
|
||||
/**
|
||||
* A copy of the {@link #timePointsWithCachedNullResult} contents offering fast contains checks.
|
||||
*/
|
||||
private final HashSet<TimePoint> timePointsWithCachedNullResultFastContains;
|
||||
|
||||
public TrackBasedEstimationWindTrackImpl(TrackedRace trackedRace, long millisecondsOverWhichToAverage) {
|
||||
super(millisecondsOverWhichToAverage);
|
||||
@@ -60,6 +66,7 @@ public class TrackBasedEstimationWindTrackImpl extends WindTrackImpl implements
|
||||
trackedRace.addListener(this);
|
||||
this.virtualInternalRawFixes = new EstimatedWindFixesAsNavigableSet(this, trackedRace);
|
||||
this.timePointsWithCachedNullResult = new ArrayListNavigableSet<TimePoint>(AbstractTimePoint.TIMEPOINT_COMPARATOR);
|
||||
this.timePointsWithCachedNullResultFastContains = new HashSet<TimePoint>();
|
||||
}
|
||||
|
||||
private NavigableSet<Wind> getCachedFixes() {
|
||||
@@ -73,6 +80,7 @@ public class TrackBasedEstimationWindTrackImpl extends WindTrackImpl implements
|
||||
protected synchronized void cache(TimePoint timePoint, Wind fix) {
|
||||
if (fix == null) {
|
||||
getTimePointsWithCachedNullResult().add(timePoint);
|
||||
timePointsWithCachedNullResultFastContains.add(timePoint);
|
||||
} else {
|
||||
getCachedFixes().add(fix);
|
||||
}
|
||||
@@ -80,6 +88,7 @@ public class TrackBasedEstimationWindTrackImpl extends WindTrackImpl implements
|
||||
|
||||
protected synchronized void cacheNull(TimePoint timePoint) {
|
||||
timePointsWithCachedNullResult.add(timePoint);
|
||||
timePointsWithCachedNullResultFastContains.add(timePoint);
|
||||
}
|
||||
|
||||
private synchronized void invalidateCache(Wind startOfInvalidation, TimePoint endOfInvalidation) {
|
||||
@@ -100,6 +109,7 @@ public class TrackBasedEstimationWindTrackImpl extends WindTrackImpl implements
|
||||
TimePoint next = nullIter.next();
|
||||
if (endOfInvalidation == null || next.compareTo(endOfInvalidation) < 0) {
|
||||
nullIter.remove();
|
||||
timePointsWithCachedNullResultFastContains.remove(next);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
@@ -108,7 +118,8 @@ public class TrackBasedEstimationWindTrackImpl extends WindTrackImpl implements
|
||||
|
||||
private synchronized void clearCache() {
|
||||
getCachedFixes().clear();
|
||||
getTimePointsWithCachedNullResult().clear();
|
||||
timePointsWithCachedNullResult.clear();
|
||||
timePointsWithCachedNullResultFastContains.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -119,7 +130,7 @@ public class TrackBasedEstimationWindTrackImpl extends WindTrackImpl implements
|
||||
*/
|
||||
protected synchronized Wind getEstimatedWindDirection(Position p, TimePoint timePoint) {
|
||||
Wind result;
|
||||
if (getTimePointsWithCachedNullResult().contains(timePoint)) {
|
||||
if (nullResultCacheContains(timePoint)) {
|
||||
result = null;
|
||||
} else {
|
||||
NavigableSet<Wind> cache = getCachedFixes();
|
||||
@@ -134,6 +145,10 @@ public class TrackBasedEstimationWindTrackImpl extends WindTrackImpl implements
|
||||
return result;
|
||||
}
|
||||
|
||||
private boolean nullResultCacheContains(TimePoint timePoint) {
|
||||
return timePointsWithCachedNullResultFastContains.contains(timePoint);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected NavigableSet<Wind> getInternalRawFixes() {
|
||||
return virtualInternalRawFixes;
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/sapvm"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Xmx6000m -Djava.util.logging.config.file=${project_loc:com.sap.sailing.server}/../target/configuration/logging_debug.properties -Dhttp.proxyHost=proxy.wdf.sap.corp -Dhttp.proxyPort=8080"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Xmx6000m -Djava.util.logging.config.file=${project_loc:com.sap.sailing.server}/../target/configuration/logging_debug.properties -Dhttp.proxyHost=proxy.wdf.sap.corp -Dhttp.proxyPort=8080 -Dexpedition.udp.port=2010 -Djetty.home=${project_loc:com.sap.sailing.server}/../target/configuration/jetty"/>
|
||||
<stringAttribute key="pde.version" value="3.3"/>
|
||||
<booleanAttribute key="show_selected_only" value="false"/>
|
||||
<stringAttribute key="target_bundles" value="javax.servlet@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.junit4@default:default"/>
|
||||
<stringAttribute key="target_bundles" value="com.sap.ui5.commons@default:default,com.sap.ui5.core@default:default,com.sap.ui5.gwt.commons@default:default,com.sap.ui5.gwt.core@default:default,com.sap.ui5.resource.osgi@default:false,com.sap.ui5.resource@default:default,javax.servlet@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.launcher@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jmx@default:default,org.eclipse.jetty.nested@default:default,org.eclipse.jetty.osgi.boot@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.junit4@default:default,slf4j.api@default:default,slf4j.jdk14@default:false"/>
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useCustomFeatures" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="true"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils.test@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination.test@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.test@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.test@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@default:default,com.sap.sailing.expeditionconnector.test@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.gwt.ui.test@default:default,com.sap.sailing.gwt.ui@default:default,com.sap.sailing.mongodb.test@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.server.api@default:default,com.sap.sailing.server.test@default:default,com.sap.sailing.server@default:default,com.sap.sailing.targetplatform@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,com.tractrac.resultapi@default:default,org.json.simple@default:default"/>
|
||||
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils.test@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination.test@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.test@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.test@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@default:default,com.sap.sailing.expeditionconnector.test@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.geocoding.test@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui.test@default:default,com.sap.sailing.gwt.ui@default:default,com.sap.sailing.mongodb.test@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.server.api@default:default,com.sap.sailing.server.test@default:default,com.sap.sailing.server@default:default,com.sap.sailing.targetplatform@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,com.tractrac.resultapi@default:default,org.json.simple@default:default"/>
|
||||
</launchConfiguration>
|
||||
Reference in new issue
Block a user