Jelajahi Sumber

BenchmarkReport: average time

Ranides Atterwim 10 tahun lalu
induk
melakukan
b141eb4f3f

+ 8 - 7
assira.junit/src/main/java/net/ranides/assira/junit/BenchmarkReport.java

@@ -40,18 +40,19 @@ public final class BenchmarkReport {
         );
                 
         for(List<Info> binfo : result.map.values()) {
-            int trials = binfo.size();
+            int n = 0; // binfo.size();
             double avg = 0;
             double dev = 0;
             for(Info info : binfo) {
-                avg += info.time;
+                avg += info.trials*info.time;
+                n += info.trials;
             }
-            avg = avg / trials;
+            avg = avg / n;
 
             for(Info info : binfo) {
-                dev += (avg - info.time) * (avg - info.time);
+                dev += info.trials * ((avg - info.time) * (avg - info.time));
             }
-            dev = Math.sqrt(dev);
+            dev = Math.sqrt(dev) / n;
             out.printf(pattern, binfo.get(0).name, avg, dev);
         }
     }
@@ -88,14 +89,14 @@ public final class BenchmarkReport {
         public final String name;
         public final String trial;
         public final double time;
-        public final double timeDev;
+        public final int trials;
         
         public Info(Matcher hit) {
             this.vm = hit.group(1);
             this.name = hit.group(3);
             this.trial = hit.group(2);
             this.time = Double.parseDouble(hit.group(4).replace(',', '.'));
-            this.timeDev = Double.parseDouble(hit.group(5).replace(',', '.'));
+            this.trials = Integer.parseInt(hit.group(6));
         }
 
     }

+ 11 - 11
assira.junit/src/test/java/net/ranides/assira/junit/BenchmarkReportTest.java

@@ -18,9 +18,9 @@ import static org.junit.Assert.*;
 public class BenchmarkReportTest {
     
     private static final String INPUT =
-        "     0% Scenario{vm=java, trial=0, benchmark=ListThread} 12741,34 ns; ?=252,99 ns @ 10 trials\n"+
-        "    4% Scenario{vm=java, trial=1, benchmark=ListThread} 12735,86 ns; ?=29,81 ns @ 3 trials\n"+
-        "    8% Scenario{vm=java, trial=2, benchmark=ListThread} 12624,55 ns; ?=70,86 ns @ 3 trials\n"+
+        "     0% Scenario{vm=java, trial=0, benchmark=ListThread} 12741,34 ns; ?=252,99 ns @ 20 trials\n"+
+        "    4% Scenario{vm=java, trial=1, benchmark=ListThread} 10735,86 ns; ?=29,81 ns @ 1 trials\n"+
+        "    8% Scenario{vm=java, trial=2, benchmark=ListThread} 10624,55 ns; ?=70,86 ns @ 1 trials\n"+
         "   13% Scenario{vm=java, trial=0, benchmark=CallerThread} 13616,58 ns; ?=36,58 ns @ 3 trials\n"+
         "   17% Scenario{vm=java, trial=1, benchmark=CallerThread} 13677,01 ns; ?=66,01 ns @ 3 trials\n"+
         "   21% Scenario{vm=java, trial=2, benchmark=CallerThread} 13852,23 ns; ?=63,15 ns @ 3 trials\n"+
@@ -44,14 +44,14 @@ public class BenchmarkReportTest {
         "   96% Scenario{vm=java, trial=2, benchmark=ListSecurityManager} 814,32 ns; ?=2,53 ns @ 3 trials\n";
     
     private static final String EXPECTED = 
-        "CallerException          = 12942 ? 76%n"+
-        "CallerSecurityManager    =   820 ? 8%n"+
-        "CallerSunReflect         =   144 ? 2%n"+
-        "CallerThread             = 13715 ? 173%n"+
-        "ListException            = 12072 ? 46%n"+
-        "ListSecurityManager      =   817 ? 6%n"+
-        "ListSunReflect           =  3834 ? 97%n"+
-        "ListThread               = 12701 ? 93%n";
+        "CallerException          = 12961 ? 10%n"+
+        "CallerSecurityManager    =   820 ? 2%n"+
+        "CallerSunReflect         =   145 ? 0%n"+
+        "CallerThread             = 13715 ? 33%n"+
+        "ListException            = 12072 ? 9%n"+
+        "ListSecurityManager      =   817 ? 1%n"+
+        "ListSunReflect           =  3836 ? 14%n"+
+        "ListThread               = 12554 ? 126%n";
     
     @Test
     public void testManual() {