TGI Praktikum |
Auswertung und Test |
Wert von lg(-2) | |
Getlg | Programmabbruch |
Wert von lg(0) | |
Getlg | Programmabbruch |
Wert von lg(0.45) | Berechnungsdauer* | |
eigene Funktion | -0.34678748622466 | 13.60 |
FPU-Befehl | -0.34678748622466 | 2.07 |
Wert von lg(1) | Berechnungsdauer* | |
eigene Funktion | 0.00000000000000 | 13.60 |
FPU-Befehl | 0.00000000000000 | 2.07 |
Wert von lg(3.5) | Berechnungsdauer* | |
eigene Funktion | 0.54406804435028 | 13.60 |
FPU-Befehl | 0.54406804435028 | 2.07 |
*Gemessen in Sekunden bei 5.000.000 Berechnungen mit einem Pentium III 450 MHz
Wie erwartet bricht das Programm für Argumente kleinergleich Null ab. Beide Funktionen benötigen für unterschiedliche Argumente immer dieselbe Berechnungszeit was auf die konstante Anzahl von Schleifenwiederholungen zurückzuführen ist.
Die prozessorinterne FPU-Funktion ist 6.57 mal schneller als unsere Funktion. Grund hierfür sind die Zeiteinsparungen wegen dem Verzicht auf Hauptspeicherzugriffe (Variablen und Konstanten zur Berechnung mit dem eigenen Assemblerprogramm). Vermutlich ließe sich durch die optimierte Integration der einzelnen FPU-Anweisungen (z.B. fxtract für die Aufsplittung des Arguments in Exponent und Mantisse) zum einzelnen Logarithmus-FPU-Befehl auch noch Zeit einsparen.
Schneller als die prozessorinterne Funktion ist unsere Funktion erst für weniger als 4 Schleifenwiederholungen, was bei unseren Testargumenten nur noch eine Genauigkeit von 5 Nachkommastellen liefert. Für diesen Fall würde sich unsere Implementierung zumindest für manche grafische Anwendungen, die besonders Berechnungsintensiv sind besser eignen.
zurück | 23.06.00 Katrin Stedele, Rainer Schmoll, Tanja Wojak |