Repository navigation
Expand file tree
/
Copy pathreadmeZusatz.txt
More file actions
75 lines (59 loc) · 3.82 KB
/
Copy pathreadmeZusatz.txt
File metadata and controls
75 lines (59 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Der Zusatz stellt ein eigenes Projekt das, das mithilfe des CommandPatterns Realisiert wurde.
K U R Z B E S C H R E I B U N G
Dieses Projekt ist eine Software zum "Benchmarken" (also zum Testen von Preformancezeiten) beliebiger Programme bzw. Methoden.
(Java 9 Modules)
Enthalten sind einmal die Benchmark-Software und ein Demoprogramm.
Die Benchmark-Software testet die Ausführungszeit einer beliebigen Methode oder Klasse und schreibt die Ergebnisse
in eine Datei.
Die Präzision, also in welcher Zeiteinheit gemessen werden soll, der Pfad der zu erstellenden
Ergebniss-Dateien können frei eingestellt werden. Es kann auch eingestellt werden, wie oft ein
Experiment wiederholt werden soll und ob dazu die durchschnittliche Bearbeitungszeit (in Abhängigkeit der Genauigkeit)
mit ausgegeben werden soll.
Jedes Experiment erhält dabei eine eigene Datei.
D E T A I L S / V E R W E N D U N G
Der Client bekommt das Modul:
module futureman.benchmarker{
exports speed.testing.methods;
exports speed.testing.benchmark.configurators;
exports speed.testing.benchmark.runner;
}
zur Verfügung gestellt.
speed.testing.methods: beinhaltet beispielimplementierungen von Opperationen, die es gilt zu "benchmarken"
(Also deren Verarbeitungszeit es gilt festzuhalten).
Desweiteren wird hier das interface MethodToBenchmark bereitgestellt.
Vorgehensweise:
1. Der Nutzer Wählt sich eine Klasse aus, die getestet werden soll.
2. Der Nutzer fügt "implements MethodToBenchmark" zu seiner Klassendeffinition hinzu und implementiert die dort geforderte
Methoden void run() und String getName()
2.1: run()
run() soll lediglich den Aufruf einer (oder mehrere) zu testenden Methoden durchführen. Die Software misst dann deren Ausführungszeit.
getName() soll lediglich einen Namen für dieses Geschwindigkeitsexperiment zurückliefern.
3. Der Nutzer verwendet das Objekt bzw. Klasse Configurator (Package speed.testing.benchmark.configurators).
Mit diesem können Einstellungen des/der Tests vorgenommen werden:
* Wie viel mal soll der Test wiederholt werden?
* Wohin sollen die Ergebnisse geschrieben werden?
* Wie hoch soll die genauigkeit sein (Sekunden, Millisekunden, Microsekunden, Nanosekunden)?
* Soll ein durschnitt aller Ergebnisse gebildet werden?
* ...
4. Der nutzer startet den test über ein erzeugtes Runner Objekt: Runner.startBenchmarking().
Diesem Objekt wird die aus 3. Erstellte Konfiguration übergeben (Configuration Objekt) und startet anahnd dessen
das Experiment.
(Pakage speed.testing.benchmark.runner)
Ein Beispiel kann in diesem Package gefunden werden: Run.java ist ein beispiel benchmark experiment,
dass die mitgelieferten Implementierungen von MethodToBenchmark verwendet.
C O M P I L I E R E N
Wer dieses Projekt gerne selbst Kompilieren möchte, muss lediglich über das Build-Tool Maven die "pom.xml"
im speedTesting Wurzelverzeichniss starten.
L I N K E N & C O
Es sind mehrere .bat Dateien hinterlegt. Dieser erzeugen eine eige Java JVM die nur dieses Programm ethält.
Nachdem das Linken erfolgreich abgeschlossen ist, kann diese mit "launch.bat" verwendet werden.
Die selbst erstellte JVM ist wie eine normale JVM! Das heist:
Die erstellte JVM kann auf einen beliebigen rechner portiert und ausgeführt werden ohne installation!
Einfach das Script ausführen und es läuft!
BEACHTE: Diese JVM ersetzt eine normale JAVA Destirbution nicht! Sie enhält nur das benchmark-Programm.
L I Z E N S & C O
Diese Anwendung wurde von Stephan Penner aka. Futureman2007 geplant und umgesetzt.
Diese Anwendung darf frei editiert,präsentiert und weitergegebene werden, solange der uhrsprüngliche Author
"Stephan Penner" bzw. "Futureman2007"
namentlich in schriftlicher Form bei Präsentationen, Quellcodes und Dokumentationen dazu erwähnt wird.
Dies gilt ebenfalls für Software bzw. Projekte, die dieses Projekt Erweiterung, Änderung oder auch Bezug dazu nehmen.