From 775546f63d04778ab26b401fc179746fa3fb71a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Mon, 21 May 2012 14:59:38 +0200 Subject: Process data and output in gnuplot format. --- .../src/main/java/com/orbekk/stats/Analysis.java | 32 ++++++++++++++++++++++ .../java/com/orbekk/stats/Experiment1Impl.java | 22 ++++++++++++--- 2 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 statserver/src/main/java/com/orbekk/stats/Analysis.java diff --git a/statserver/src/main/java/com/orbekk/stats/Analysis.java b/statserver/src/main/java/com/orbekk/stats/Analysis.java new file mode 100644 index 0000000..a6d0271 --- /dev/null +++ b/statserver/src/main/java/com/orbekk/stats/Analysis.java @@ -0,0 +1,32 @@ +package com.orbekk.stats; + +import java.util.List; + +public class Analysis { + final List samples; + + public Analysis(List samples) { + this.samples = samples; + } + + public double getAverage() { + double sum = 0.0; + for (Double d : samples) { + sum += d; + } + return sum / samples.size(); + } + + public double getVariance() { + double average = getAverage(); + double sumDifferences = 0.0; + for (Double d : samples) { + sumDifferences += (d - average) * (d - average); + } + return sumDifferences / samples.size(); + } + + public double getStandardDeviation() { + return Math.sqrt(getVariance()); + } +} diff --git a/statserver/src/main/java/com/orbekk/stats/Experiment1Impl.java b/statserver/src/main/java/com/orbekk/stats/Experiment1Impl.java index a9b8331..cd4393c 100644 --- a/statserver/src/main/java/com/orbekk/stats/Experiment1Impl.java +++ b/statserver/src/main/java/com/orbekk/stats/Experiment1Impl.java @@ -3,6 +3,7 @@ package com.orbekk.stats; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.logging.Logger; @@ -14,13 +15,19 @@ import com.orbekk.stats.Experiments.SimpleTiming; public class Experiment1Impl extends Experiment1 { private final static Logger logger = Logger.getLogger(Experiment1Impl.class.getName()); - private List samples = new ArrayList(); + // private List samples = new ArrayList(); + + private HashMap> samples = + new HashMap>(); @Override public synchronized void registerSample(RpcController controller, SimpleTiming request, RpcCallback done) { logger.info(request.toString()); - samples.add(request); + if (samples.get(request.getNumDevices()) == null) { + samples.put(request.getNumDevices(), new ArrayList()); + } + samples.get(request.getNumDevices()).add(request.getTiming()); done.run(Empty.getDefaultInstance()); } @@ -30,9 +37,16 @@ public class Experiment1Impl extends Experiment1 { printer = new PrintWriter(filename); System.out.println("Writing results to " + filename); printer.println("# Automatically generated by Experiment1Impl.java"); - for (SimpleTiming timing : samples) { - printer.println(timing); + + printer.println("# "); + for (int numDevices : samples.keySet()) { + Analysis data = new Analysis(samples.get(numDevices)); + double avg = data.getAverage(); + double stddev = data.getStandardDeviation(); + printer.println(String.format( + "%d %f %f %f", numDevices, avg, avg-stddev, avg+stddev)); } + } catch (FileNotFoundException e) { e.printStackTrace(); } finally { -- cgit v1.2.3