Class AbstractCachedFunction<T extends FunctionValue>
java.lang.Object
de.tu_bs.isbs.util.math.functions.AbstractCachedFunction<T>
- Type Parameters:
T
-
- All Implemented Interfaces:
UnivariateFunction
public abstract class AbstractCachedFunction<T extends FunctionValue> extends java.lang.Object implements UnivariateFunction
Alle bereits abgerufenen Funktionswerte werden in einem Cache gespeichert.
- Author:
- reiser
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AbstractCachedFunction.CacheStatistics
-
Constructor Summary
Constructors Constructor Description AbstractCachedFunction()
-
Method Summary
Modifier and Type Method Description void
clearCache()
Löscht alle im Cache gespeicherten Funktionswerte.protected abstract T
createFunctionValue(double x)
AbstractCachedFunction.CacheStatistics
getCacheStatistics()
T
getFunctionValue(double x)
protected int
initialCacheCapacity()
-
Constructor Details
-
AbstractCachedFunction
public AbstractCachedFunction()
-
-
Method Details
-
createFunctionValue
-
initialCacheCapacity
protected final int initialCacheCapacity() -
getFunctionValue
- Specified by:
getFunctionValue
in interfaceUnivariateFunction<T extends FunctionValue>
-
clearCache
public final void clearCache()Löscht alle im Cache gespeicherten Funktionswerte. Wird normalerweise nicht benötigt. Aufruf in Spezialfällen sinnvoll, um Speicherplatz-Problemen vorzubeugen: Wenn sehr viele Ergebnisse im Cache vorhanden sind, kann es sein, dass die Performance sehr stark einbricht; entweder weil der verfügbare Hauptspeicher zur Neige geht und der Garbage-Collector ständig arbeitet, oder weil evtl. die Hashmap degeneriert (degenerierende Hashmaps wurden z.B. mal als mögliches Ziel von D.O.S.-Attacken genannt -- ist allerdings nur eine Vermutung, dass dies hier zufällig auftreten könnte, wahrscheinlicher scheint Speichermangel als Grund für den Performance-Einbruch). Abhilfe schaffen durch Cache mit begrenzter Größe? -
getCacheStatistics
-