From 9e69343523957a62bc77fe30234fb46249f0a88b Mon Sep 17 00:00:00 2001 From: Christian Wulf <chw@informatik.uni-kiel.de> Date: Wed, 20 Aug 2014 23:52:10 +0200 Subject: [PATCH] added BucketTimingsReader --- conf/logback.groovy | 3 +- src/main/java/util/BucketTimingsReader.java | 56 +++++++++++++++++++++ submodules/JCTools | 2 +- 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 src/main/java/util/BucketTimingsReader.java diff --git a/conf/logback.groovy b/conf/logback.groovy index 58e714ae..235da2c6 100644 --- a/conf/logback.groovy +++ b/conf/logback.groovy @@ -26,4 +26,5 @@ logger "teetime.variant.methodcallWithPorts.stage", INFO logger "teetime.variant.methodcallWithPorts.framework.core.pipe", INFO -logger "util.TimingsReader", TRACE, ["FILE"] \ No newline at end of file +logger "util.TimingsReader", TRACE, ["FILE"] +logger "util.BucketTimingsReader", TRACE, ["FILE"] \ No newline at end of file diff --git a/src/main/java/util/BucketTimingsReader.java b/src/main/java/util/BucketTimingsReader.java new file mode 100644 index 00000000..7021595a --- /dev/null +++ b/src/main/java/util/BucketTimingsReader.java @@ -0,0 +1,56 @@ +package util; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.base.Charsets; +import com.google.common.io.CharSource; +import com.google.common.io.Files; + +public class BucketTimingsReader { + + private final static Logger LOGGER = LoggerFactory.getLogger(BucketTimingsReader.class); + + public static void main(final String[] args) throws IOException { + String fileName = args[0]; + + Long[] currentTimings = new Long[10000]; + int processedLines = 0; + List<Long> buckets = new LinkedList<Long>(); + + LOGGER.trace("Reading " + fileName); + CharSource charSource = Files.asCharSource(new File(fileName), Charsets.UTF_8); + BufferedReader bufferedStream = charSource.openBufferedStream(); + String line; + while (null != (line = bufferedStream.readLine())) { + String[] strings = line.split(";"); + Long timing = new Long(strings[1]); + currentTimings[processedLines] = timing; + processedLines++; + if (currentTimings.length == processedLines) { + Long aggregatedTimings = StatisticsUtil.calculateAverage(Arrays.asList(currentTimings)); + buckets.add(aggregatedTimings); + processedLines = 0; + } + } + + LOGGER.trace("#buckets: " + buckets.size()); + + List<Long> durationsInNs = buckets.subList(buckets.size() / 2, buckets.size()); + + LOGGER.trace("Calculating quantiles..."); + Map<Double, Long> quintiles = StatisticsUtil.calculateQuintiles(durationsInNs); + LOGGER.info(StatisticsUtil.getQuantilesString(quintiles)); + + long confidenceWidth = StatisticsUtil.calculateConfidenceWidth(durationsInNs); + LOGGER.info("Confidence width: " + confidenceWidth); + } +} diff --git a/submodules/JCTools b/submodules/JCTools index 75998aa2..88e1e25f 160000 --- a/submodules/JCTools +++ b/submodules/JCTools @@ -1 +1 @@ -Subproject commit 75998aa20b7ec897ec321c1f94192de888f2dc6e +Subproject commit 88e1e25f9519b250258c7e5ada30935975ab2d10 -- GitLab