de.hska.java.aufgaben.sonstiges
Class HexadezimalZifferZeitmessung
java.lang.Object
de.hska.java.aufgaben.sonstiges.HexadezimalZifferZeitmessung
public class HexadezimalZifferZeitmessung
- extends java.lang.Object
Enthält eine main-Methode, um die durchschnittliche Zeit in Nanosekunden zu messen, die
ein Aufruf von getDezimaWert() der verschiedenen HexadezimalZiffer-Implementierungen
benötigt.
Hier die Werte meiner Implementierung (JDK 1.6, keine Optimierung,
Athlon 64 3500+).
Switch: 11.996048504545454
If: 17.546552072727273
Feld: 14.882158081818181
switch ist also am schnellsten.
Es gibt im Bytecode zwei verschiedene
switch-Befehle: der eine vergleicht die Werte, der andere verwendet
eine Sprungtabelle.
Vermutlich ist switch hier schneller, als die eigene Implementierung
mit einer "Sprung"tabelle, da der Bytecode für das switch effizienter und
direkter vom Interpreter ausgeführt werden kann.
Zurück zum Aufgabentext
- Author:
- pape
|
Method Summary |
static long |
getNanoTime(int anzahlAufrufe,
HexadezimalZiffer[] hexadezimalZiffern)
Gibt die Gesamtzeit für alle Aufrufe von getDezimalWert() der
HexadezimalZiffern zurück. |
static void |
main(java.lang.String[] args)
Misst die durchschnittliche Zeit in Nanosekunden, die ein
Aufruf von getDezimalWert() für alle Implementierungen von
HexadezimalZiffer hat. |
| Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
HexadezimalZifferZeitmessung
public HexadezimalZifferZeitmessung()
main
public static void main(java.lang.String[] args)
- Misst die durchschnittliche Zeit in Nanosekunden, die ein
Aufruf von getDezimalWert() für alle Implementierungen von
HexadezimalZiffer hat. Dabei werden immer die Dezimalwerte
alle Ziffer von '0' bis '9', 'a'-'f' und 'A'-'F' gleichverteilt
sehr oft nacheinander berechnet.
getNanoTime
public static long getNanoTime(int anzahlAufrufe,
HexadezimalZiffer[] hexadezimalZiffern)
- Gibt die Gesamtzeit für alle Aufrufe von getDezimalWert() der
HexadezimalZiffern zurück. Es werden insgesamt
anzahlAufrufe *
hexadezimalZiffer.length Aufrufe durchgeführt.
anzahlAufrufe sollte möglichst gross sein, damit bei der
Zeitmessung die initialen Zeitaufwände
für die for-Schleifen nicht besonders ins Gewicht fallen.
(c) Prof. Dr. Christian Pape --- Übersicht aller Java-Programmieraufgaben