Author: sebb
Date: Thu Mar 11 22:55:21 2010
New Revision: 922051
URL: http://svn.apache.org/viewvc?rev=922051&view=rev
Log:
Implement addValue(T val, int sampleCount) method to simplify processing
aggregated samples
Modified:
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculator.java
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculatorInteger.java
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculatorLong.java
Modified:
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculator.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculator.java?rev=922051&r1=922050&r2=922051&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculator.java
(original)
+++
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculator.java
Thu Mar 11 22:55:21 2010
@@ -191,29 +191,44 @@ public abstract class StatCalculator<T e
return count;
}
- public void addValue(T val) {
- updateValueCount(val);
- count++;
+ protected abstract T divide(T val, int n);
+
+ public void addValue(T val, int sampleCount) {
+ updateValueCount(val, sampleCount);
+ count += sampleCount;
double currentVal = val.doubleValue();
sum += currentVal;
- sumOfSquares += currentVal * currentVal;
+ T actualValue = val;
+ if (sampleCount > 1){
+ // For n values in an aggregate sample the average value = (val/n)
+ // So need to add n * (val/n) * (val/n) = val * val / n
+ sumOfSquares += currentVal * currentVal / sampleCount;
+ actualValue = divide(val, sampleCount);
+ } else {
+ sumOfSquares += currentVal * currentVal;
+ actualValue = val;
+ }
mean = sum / count;
deviation = Math.sqrt((sumOfSquares / count) - (mean * mean));
- if (val.compareTo(max) > 0){
- max=val;
+ if (actualValue.compareTo(max) > 0){
+ max=actualValue;
}
- if (val.compareTo(min) < 0){
- min=val;
+ if (actualValue.compareTo(min) < 0){
+ min=actualValue;
}
}
- private void updateValueCount(T val) {
+ public void addValue(T val) {
+ addValue(val,1);
+ }
+
+ private void updateValueCount(T val, int sampleCount) {
MutableLong count = valuesMap.get(val);
if (count != null) {
- count.increment();
+ count.add(sampleCount);
} else {
// insert new value
- valuesMap.put(val, new MutableLong(1L));
+ valuesMap.put(val, new MutableLong(sampleCount));
}
}
}
Modified:
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculatorInteger.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculatorInteger.java?rev=922051&r1=922050&r2=922051&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculatorInteger.java
(original)
+++
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculatorInteger.java
Thu Mar 11 22:55:21 2010
@@ -30,4 +30,13 @@ public class StatCalculatorInteger exten
public void addValue(int val){
super.addValue(new Integer(val));
}
+
+ public void addValue(int val, int sampleCount){
+ super.addValue(new Integer(val), sampleCount);
+ }
+
+ @Override
+ protected Integer divide(Integer val, int n) {
+ return new Integer(val.intValue() / n);
+ }
}
Modified:
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculatorLong.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculatorLong.java?rev=922051&r1=922050&r2=922051&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculatorLong.java
(original)
+++
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/math/StatCalculatorLong.java
Thu Mar 11 22:55:21 2010
@@ -30,4 +30,13 @@ public class StatCalculatorLong extends
public void addValue(long val){
super.addValue(new Long(val));
}
+
+ public void addValue(long val, int sampleCount){
+ super.addValue(new Long(val), sampleCount);
+ }
+
+ @Override
+ protected Long divide(Long val, int n) {
+ return new Long(val.longValue() / n);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]