summaryrefslogtreecommitdiffstats
path: root/src/de/fhswf/in/inf/java1/aufgabe06
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2014-12-07 19:15:58 +0100
committerStefan Suhren <suhren.stefan@fh-swf.de>2014-12-07 19:18:03 +0100
commit9acea903216dbe371dd7b41cbf23b46a5732bcb4 (patch)
tree5a61491ad22e470db8151d2e07f163b011c72d6e /src/de/fhswf/in/inf/java1/aufgabe06
parent8a53a8fca255e4a84ca0e35dac925a223738b98a (diff)
downloadJava1-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.java81
-rw-r--r--src/de/fhswf/in/inf/java1/aufgabe06/ListBenchmark.java137
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
+ }
+}