Package com.biglybt.core.util
Class Average
java.lang.Object
com.biglybt.core.util.Average
- Direct Known Subclasses:
PausableAverage
This class is used to compute average (mostly for speed transfer).
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate long
private final int
private final int
private final int
It uses a simple array of longs to store values in a cycling way.private long[]
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Average
(int _refreshRate, int _period) Private constructor for an Average -
Method Summary
Modifier and TypeMethodDescriptionvoid
addValue
(long value) Public method to add a value to the average, the time it is added is the time this method is called.void
clear()
void
long
This method can be called to get the current average value.long
getAverage
(int average_period) private Object[]
double
getDoubleAverageAsString
(int precision) protected long
static Average
getInstance
(int refreshRate, int period) The way to get a new Average Object, it does some parameter checking.long
final long
getSum()
protected final long
getSum
(int slots) private void
update
(long timeFactor) This method is used to update the buffer that stores the values, in fact it mostly does clean-up over this buffer, erasing all values that have not been updated.
-
Field Details
-
refreshRate
private final int refreshRateIt uses a simple array of longs to store values in a cycling way. The array has 2 more elements than really needed to compute the average. One is the next one to be filled, and its value is always 0, and the other one is the one currently filled, which value is not taken into account for the average. -
period
private final int period -
nbElements
private final int nbElements -
lastUpdate
private long lastUpdate -
values
private long[] values
-
-
Constructor Details
-
Average
protected Average(int _refreshRate, int _period) Private constructor for an Average- Parameters:
_refreshRate
- the refresh rate in ms_period
- the period in s
-
-
Method Details
-
getInstance
The way to get a new Average Object, it does some parameter checking. refreshRate must be greater than 100, and period*1000 must be greater than refreshRate- Parameters:
refreshRate
- in msperiod
- in s- Returns:
- the newlly created Average, or null if parameters are wrong
-
clear
public void clear() -
cloneFrom
-
getCloneDetails
-
update
private void update(long timeFactor) This method is used to update the buffer that stores the values, in fact it mostly does clean-up over this buffer, erasing all values that have not been updated.- Parameters:
timeFactor
- which is the currentTime divided by the refresh Rate
-
addValue
public void addValue(long value) Public method to add a value to the average, the time it is added is the time this method is called.- Parameters:
value
- the value to be added to the Average
-
getAverage
public long getAverage()This method can be called to get the current average value.- Returns:
- the current Average computed.
-
getDoubleAverage
public double getDoubleAverage() -
getDoubleAverageAsString
-
getAverage
public long getAverage(int average_period) -
getPointValue
public long getPointValue() -
getSum
public final long getSum() -
getSum
protected final long getSum(int slots) -
getEffectiveTime
protected long getEffectiveTime()
-