/** * */ package de.fhswf.in.inf.java1.aufgabe6; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Random; import java.util.Vector; /** * TODO Add comment here * * @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 testListLength = 100000; List testList = new ArrayList(testListLength); System.out.print("ArrayList am Anfang: "); System.out.println(benchmarkAtBeginning(testList, testListLength) + " ms"); System.out.print("ArrayList am Ende: "); System.out.println(benchmarkAtEnding(testList, testListLength) + " ms"); System.out.print("ArrayList zufälliger Index: "); System.out.println(benchmarkAtRandom(testList, testListLength) + " ms"); testList = new Vector(testListLength); System.out.print("Vector am Anfang: "); System.out.println(benchmarkAtBeginning(testList, testListLength) + " ms"); System.out.print("Vector am Ende: "); System.out.println(benchmarkAtEnding(testList, testListLength) + " ms"); System.out.print("Vector zufälliger Index: "); System.out.println(benchmarkAtRandom(testList, testListLength) + " ms"); testList = new LinkedList(); System.out.print("LinkedList am Anfang: "); System.out.println(benchmarkAtBeginning(testList, testListLength) + " ms"); System.out.print("LinkedList am Ende: "); System.out.println(benchmarkAtEnding(testList, testListLength) + " ms"); System.out.print("LinkedList zufälliger Index: "); System.out.println(benchmarkAtRandom(testList, testListLength) + " 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 } }