You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2010/03/11 23:57:59 UTC

svn commit: r922054 - /jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java

Author: sebb
Date: Thu Mar 11 22:57:58 2010
New Revision: 922054

URL: http://svn.apache.org/viewvc?rev=922054&view=rev
Log:
Correct calculation of min, max and std. deviation for aggregated samples

Modified:
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java

Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java?rev=922054&r1=922053&r2=922054&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java Thu Mar 11 22:57:58 2010
@@ -73,11 +73,19 @@ public class Calculator {
 
     private void addValue(long newValue, int sampleCount) {
         count += sampleCount;
-        minimum=Math.min(newValue, minimum);
-        maximum=Math.max(newValue, maximum);
         double currentVal = newValue;
         sum += currentVal;
-        sumOfSquares += currentVal * currentVal;
+        if (sampleCount > 1){
+            minimum=Math.min(newValue/sampleCount, minimum);
+            maximum=Math.max(newValue/sampleCount, maximum);
+            // 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);
+        } else {
+            minimum=Math.min(newValue, minimum);
+            maximum=Math.max(newValue, maximum);
+            sumOfSquares += currentVal * currentVal;
+        }
         // Calculate each time, as likely to be called for each add
         mean = sum / count;
         deviation = Math.sqrt((sumOfSquares / count) - (mean * mean));



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org