diff options
| author | Stefan Suhren <suhren.stefan@fh-swf.de> | 2014-12-07 19:15:58 +0100 |
|---|---|---|
| committer | Stefan Suhren <suhren.stefan@fh-swf.de> | 2014-12-07 19:18:03 +0100 |
| commit | 9acea903216dbe371dd7b41cbf23b46a5732bcb4 (patch) | |
| tree | 5a61491ad22e470db8151d2e07f163b011c72d6e /src/de/fhswf/in/inf/java1/aufgabe06 | |
| parent | 8a53a8fca255e4a84ca0e35dac925a223738b98a (diff) | |
| download | Java1-9acea903216dbe371dd7b41cbf23b46a5732bcb4.tar.gz Java1-9acea903216dbe371dd7b41cbf23b46a5732bcb4.zip | |
Refactored the packagenames fo better sorting
Diffstat (limited to 'src/de/fhswf/in/inf/java1/aufgabe06')
| -rw-r--r-- | src/de/fhswf/in/inf/java1/aufgabe06/Aufgabe6.java | 81 | ||||
| -rw-r--r-- | src/de/fhswf/in/inf/java1/aufgabe06/ListBenchmark.java | 137 |
2 files changed, 218 insertions, 0 deletions
diff --git a/src/de/fhswf/in/inf/java1/aufgabe06/Aufgabe6.java b/src/de/fhswf/in/inf/java1/aufgabe06/Aufgabe6.java new file mode 100644 index 0000000..0f40448 --- /dev/null +++ b/src/de/fhswf/in/inf/java1/aufgabe06/Aufgabe6.java @@ -0,0 +1,81 @@ +/** + * + */ +package de.fhswf.in.inf.java1.aufgabe06; + +import java.util.Iterator; +import java.util.Vector; + +/** + * Main function for testing Vectors and Lists. + * + * @author $Author: $ + * @version $Revision: $, $Date: $ UTC + */ +public final class Aufgabe6 +{ + + /** + * Prevents instantiation of the utility class. + * + */ + private Aufgabe6() + { + } + + /** + * Main function for testing Vectors and Lists. + * + * @param args + * Command line arguments. + */ + public static void main(String[] args) + { + final int testLength = 10000000; + Vector<Integer> test = new Vector<>(testLength); + Integer testGet; + + for (int i = 0; i < test.capacity(); i++) + { + test.add(i); + } + + long start; + start = System.currentTimeMillis(); // Gets current time in ms + + for (int i = 0; i < test.size(); i++) + { + testGet = test.elementAt(i); + } + + // Calculates the runtime of for + System.out.println("Elapsed time: " + + (System.currentTimeMillis() - start) + " ms"); + + start = System.currentTimeMillis(); // Gets current time in ms + + for (Iterator<Integer> it = test.iterator(); it.hasNext();) + { + testGet = it.next(); + } + + // Calculates the runtime of for + System.out.println("Elapsed time: " + + (System.currentTimeMillis() - start) + " ms"); + + start = System.currentTimeMillis(); // Gets current time in ms + + for (Integer integer : test) + { + testGet = integer; + } + + // Calculates the runtime of foreach + System.out.println("Elapsed time: " + + (System.currentTimeMillis() - start) + " ms"); + + ListBenchmark.startBenchmark(); + + } + +} 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<Integer>(times), times); + benchmarkGrouping("Vector", new Vector<Integer>(times), times); + benchmarkGrouping("LinkedList", new LinkedList<Integer>(), 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<Integer> 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<Integer> 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<Integer> 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<Integer> 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 + } +} |
