2019-09-12 07:54:05 +02:00
|
|
|
import java.time.Duration;
|
|
|
|
import java.time.Instant;
|
2017-09-17 17:06:26 +02:00
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Random;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Mit dem Messkonduktor kann die Zeit fuer das Erzeugen und Sortieren einer
|
|
|
|
* vorgegebenen Anzahl Zusfallszahlen gemessen werden. Die Anzahl Zufallszahlen
|
|
|
|
* ist konfigurierbar.
|
|
|
|
*/
|
|
|
|
public class Messkonduktor {
|
|
|
|
private int anzahlZufallszahlen;
|
2019-09-12 07:54:05 +02:00
|
|
|
Random zufallszahlenGenerator = new Random();
|
2017-09-17 17:06:26 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Erstellt einen Messkonduktor.
|
|
|
|
*
|
|
|
|
* @param anzahlZufallszahlen Anzahl Zufallszahlen pro Messung.
|
|
|
|
*/
|
|
|
|
public Messkonduktor(int anzahlZufallszahlen) {
|
|
|
|
this.anzahlZufallszahlen = anzahlZufallszahlen;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fuehrt eine Anzahl Messungen durch. Die Anzahl ist bestimmt durch die
|
|
|
|
* Laenge des uebergeben Arrays. Eine einzelne Messung besteht aus dem
|
|
|
|
* Generieren und Sortieren der Zufallszahlen.
|
|
|
|
*
|
|
|
|
* @param messResultate Der Array fuer die Messresultate.
|
|
|
|
* @return Messresultate mit Zeitdauer in ms.
|
|
|
|
*/
|
|
|
|
public int[] messungenDurchfuehren(int[] messResultate) {
|
|
|
|
for (int i = 0; i < messResultate.length; i++) {
|
|
|
|
messResultate[i] = einzelneMessungDurchfuehren();
|
|
|
|
}
|
|
|
|
|
|
|
|
return messResultate;
|
|
|
|
}
|
|
|
|
|
2019-09-12 07:54:05 +02:00
|
|
|
public int einzelneMessungDurchfuehren() {
|
|
|
|
Instant zeitVorher = Instant.now();
|
2017-09-17 17:06:26 +02:00
|
|
|
|
|
|
|
int[] zufallszahlen = zufallszahlenGenerieren();
|
|
|
|
Arrays.sort(zufallszahlen);
|
|
|
|
|
2019-09-12 07:54:05 +02:00
|
|
|
long zeitdauerInMs = Duration.between(zeitVorher, Instant.now()).toMillis();
|
|
|
|
return (int) zeitdauerInMs;
|
2017-09-17 17:06:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
private int[] zufallszahlenGenerieren() {
|
|
|
|
int[] zufallszahlen = new int[anzahlZufallszahlen];
|
|
|
|
|
|
|
|
for (int i = 0; i < anzahlZufallszahlen; i++) {
|
|
|
|
zufallszahlen[i] = zufallszahlenGenerator.nextInt(100000);
|
|
|
|
}
|
|
|
|
return zufallszahlen;
|
|
|
|
}
|
|
|
|
}
|