04_Praktikum-2_Messen/Messkonduktor.java

61 lines
1.7 KiB
Java
Raw Permalink Normal View History

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;
}
2021-10-21 16:31:23 +02:00
2017-09-17 17:06:26 +02:00
/**
* 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;
}
}