From 9acea903216dbe371dd7b41cbf23b46a5732bcb4 Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Sun, 7 Dec 2014 19:15:58 +0100 Subject: Refactored the packagenames fo better sorting --- .../in/inf/java1/aufgabe06/ListBenchmark.java | 137 +++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 src/de/fhswf/in/inf/java1/aufgabe06/ListBenchmark.java (limited to 'src/de/fhswf/in/inf/java1/aufgabe06/ListBenchmark.java') diff --git a/src/de/fhswf/in/inf/java1/aufgabe06/ListBenchmark.java b/src/de/fhswf/in/inf/java1/aufgabe06/ListBenchmark.java new file mode 100644 index 0000000..b03b68d --- /dev/null +++ b/src/de/fhswf/in/inf/java1/aufgabe06/ListBenchmark.java @@ -0,0 +1,137 @@ +/** + * + */ +package de.fhswf.in.inf.java1.aufgabe06; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Random; +import java.util.Vector; + +/** + * Class that benchmarks List implementations. + * + * @author $Author: $ + * @version $Revision: $, $Date: $ UTC + */ +public final class ListBenchmark +{ + + private static final Integer TESTOBJ = new Integer(214); + + /** + * Prevents instantiation of the utility class. + * + */ + private ListBenchmark() + { + } + + /** + * Starts a benchmark of different Lists and different test cases. + * + */ + public static void startBenchmark() + { + final int times = 100000; + + benchmarkGrouping("ArrayList", new ArrayList(times), times); + benchmarkGrouping("Vector", new Vector(times), times); + benchmarkGrouping("LinkedList", new LinkedList(), times); + + } + + /** + * Groups the 3 different benchmark versions together. + * + * @param variant + * Name of the list type. + * @param list + * The list which will be benchmarked. + * @param times + * How often will be inserted. + */ + private static void benchmarkGrouping(String variant, List list, + int times) + { + System.out.print(variant + " am Anfang: "); + System.out.println(benchmarkAtBeginning(list, times) + " ms"); + System.out.print(variant + " am Ende: "); + System.out.println(benchmarkAtEnding(list, times) + " ms"); + System.out.print(variant + " zufälliger Index: "); + System.out.println(benchmarkAtRandom(list, times) + " ms"); + } + + /** + * Inserts new value at the beginning of the list. + * + * @param list + * List to be tested. + * @param times + * How many inserts are done. + * @return Time in milliseconds that the action took. + */ + private static long benchmarkAtBeginning(List list, int times) + { + long start = System.currentTimeMillis(); // Gets current time in µs + + for (int i = 0; i < times; i++) + { + list.add(0, TESTOBJ); + } + + return (System.currentTimeMillis() - start); // Returns runtime + } + + /** + * Inserts new value at the end of the list. + * + * @param list + * List to be tested. + * @param times + * How many inserts are done. + * @return Time in milliseconds that the action took. + */ + private static long benchmarkAtEnding(List list, int times) + { + long start = System.currentTimeMillis(); // Gets current time in µs + + for (int i = 0; i < times; i++) + { + list.add(TESTOBJ); + } + + return (System.currentTimeMillis() - start); // Returns runtime + } + + /** + * Inserts new value at a random index of the list. + * + * @param list + * List to be tested. + * @param times + * How many inserts are done. + * @return Time in milliseconds that the action took. + */ + private static long benchmarkAtRandom(List list, int times) + { + + int[] randVal = new int[times]; + Random rand = new Random(); + + for (int i = 0; i < randVal.length; i++) + { + randVal[i] = rand.nextInt(list.size() + i + 1); + } + + long start = System.currentTimeMillis(); // Gets current time in µs + + for (int i = 0; i < times; i++) + { + list.add(randVal[i], TESTOBJ); + } + + return (System.currentTimeMillis() - start); // Returns runtime + } +} -- cgit v1.2.3-70-g09d2