diff --git a/conf/logback.groovy b/conf/logback.groovy index 58e714aeb66a661011dc99bc5a059dd9e3ad5d66..235da2c61aae89cb8bc5f9a1cc8d4d95e93257d6 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 0000000000000000000000000000000000000000..7021595a4b8b454663abd364f24ccaaa92ca3a0b --- /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 75998aa20b7ec897ec321c1f94192de888f2dc6e..88e1e25f9519b250258c7e5ada30935975ab2d10 160000 --- a/submodules/JCTools +++ b/submodules/JCTools @@ -1 +1 @@ -Subproject commit 75998aa20b7ec897ec321c1f94192de888f2dc6e +Subproject commit 88e1e25f9519b250258c7e5ada30935975ab2d10