Manfred Polak
2018-08-28 23:16:12 UTC
Moin!
Ich schreibe gerade mit 10.2 Community Edition ein Programm für
Ljapunow-Diagramme. Funktioniert auch so weit, ist aber nicht besonders
schnell. Da muss eine einfache Formel, die einen Logarithmus enthält,
sehr oft iteriert werden, und ich nehme an, dass der Logarithmus der
Hauptbremser ist.
Meine Versuche, das etwas zu beschleunigen, sind alle gescheitert.
Zuerst hatte ich die Idee, Double durch Single zu ersetzen, aber dadurch
ist das Programm nicht schneller, sondern langsamer geworden. Von
Assembler und Intrinsics habe ich keine Ahnung, fällt also flach, wenn
ich da keine genaue Anleitung bekomme. Dann habe ich die Unit Math
durch DAMath von Wolfgang Ehrhardt ersetzt. Hat im Prinzip funktioniert,
aber auch dadurch wurde das Programm langsamer statt schneller.
Und schließlich bin ich auf FastMath gestoßen. Das soll laut Eigen-
beschreibung deutlich schneller sein als die Standardarithmetik von
Delphi, und hat außer dem ohnehin schon schnelleren Logarithmus
noch eine extraschnelle Variante FastLog2. Nur blöd, dass ich das
nicht zum Laufen bekomme. Das Paket ist ins Projekt eingebunden,
die Unit Neslib.FastMath steht in der uses-Klausel und wird dort auch
erkannt. Nur wird dann keine der Funktionen von FastMath von Delphi
akzeptiert. Schreibe ich nur den Funktionsnamen, also "Log2", heißt
es "undeklarierter Bezeichner 'Log2' in Zeile ...", schreibe ich
"Neslib.FastMath.Log2", heißt es "Neslib.FastMath enthält kein Element
namens 'Log2'". Dabei bietet FastMath das in seiner Dropdown-Liste
sehr wohl an. Und genauso verhält es sich auch mit allen anderen
Funktionen von FastMath. Sie werden angeboten, aber wenn ich sie
verwenden will, sind sie nicht bekannt. Bei anderen Leuten scheint
FastMath ja zu funktionieren. Was mache ich da falsch?
Manfred
Ich schreibe gerade mit 10.2 Community Edition ein Programm für
Ljapunow-Diagramme. Funktioniert auch so weit, ist aber nicht besonders
schnell. Da muss eine einfache Formel, die einen Logarithmus enthält,
sehr oft iteriert werden, und ich nehme an, dass der Logarithmus der
Hauptbremser ist.
Meine Versuche, das etwas zu beschleunigen, sind alle gescheitert.
Zuerst hatte ich die Idee, Double durch Single zu ersetzen, aber dadurch
ist das Programm nicht schneller, sondern langsamer geworden. Von
Assembler und Intrinsics habe ich keine Ahnung, fällt also flach, wenn
ich da keine genaue Anleitung bekomme. Dann habe ich die Unit Math
durch DAMath von Wolfgang Ehrhardt ersetzt. Hat im Prinzip funktioniert,
aber auch dadurch wurde das Programm langsamer statt schneller.
Und schließlich bin ich auf FastMath gestoßen. Das soll laut Eigen-
beschreibung deutlich schneller sein als die Standardarithmetik von
Delphi, und hat außer dem ohnehin schon schnelleren Logarithmus
noch eine extraschnelle Variante FastLog2. Nur blöd, dass ich das
nicht zum Laufen bekomme. Das Paket ist ins Projekt eingebunden,
die Unit Neslib.FastMath steht in der uses-Klausel und wird dort auch
erkannt. Nur wird dann keine der Funktionen von FastMath von Delphi
akzeptiert. Schreibe ich nur den Funktionsnamen, also "Log2", heißt
es "undeklarierter Bezeichner 'Log2' in Zeile ...", schreibe ich
"Neslib.FastMath.Log2", heißt es "Neslib.FastMath enthält kein Element
namens 'Log2'". Dabei bietet FastMath das in seiner Dropdown-Liste
sehr wohl an. Und genauso verhält es sich auch mit allen anderen
Funktionen von FastMath. Sie werden angeboten, aber wenn ich sie
verwenden will, sind sie nicht bekannt. Bei anderen Leuten scheint
FastMath ja zu funktionieren. Was mache ich da falsch?
Manfred