Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TomyN,
4. Dez 2020
Hi,
Danke für alle Tipps. Das ganze macht immer mehr Spaß, obwohl es eigentlich relativ irrelevant ist, da die FFT durchaus schnell genug ist (und eigentlich sollte ich schon seit zwei Tagen Doku machen :-)
Eine Änderung im Bereich der Indices (danke für den Tipp) bringt bei großen FFTs eine signifikante Beschleunigung ( bis zu 10%), bei kleinen Größe eher eine Tendenz zu einer etwas...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TomyN,
2. Dez 2020
Hier mal ein paar Zahlen
(A): Berechnung zweier FFTs hintereinander.
(B): Berechnung einer 'Dualen' FFT.
Kompiliert für win64 (Daten: double)
1024k FFT -> A: 289ms, B: 331ms
512k FFT -> A: 88ms, B: 139ms (!!)
256k FFT -> A: 29ms, B: 40ms (!!)
128k FFT -> A: 13ms, B: 13ms
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TomyN,
2. Dez 2020
Hi,
Erstmal Danke für Euere Antworten.
Zuerst wollte ich nur verstehen, warum die Doppel-FFT teilweise langsamer ist als zwei einzelne FFTs, obwohl dabei deutlich weniger Berechnungen nötig sind. Da war die erste Antwort 'CPU-Cache' eigentlich schon die 'Lösung'.
Durch die weiteren Antworten bin ich aber etwas neugierig geworden und habe noch ein wenig rumgespielt. Ich habe jeweils 100...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TomyN,
30. Nov 2020
TAE = Array of Extended
Anzahl siehe den Post darüber.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TomyN,
30. Nov 2020
So, nun hab ich mich nochmal von 'unten' ran getestet.
Der 'Break' kommt, wenn ich die Arraygröße von $04 00 00 auf $08 00 00 erhöhe, bleibt interessanterweise bei $10 00 00 erhalten und verschwindet wieder bei $20 00 00.
Damit kann ich gut leben, da die zeitkritischen FFTs alle < $04 00 00 sind. Und Caching als Ursache erscheint mir plausibel. :thumb:
Zur meiner Verwirrung hat der Start...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TomyN,
30. Nov 2020
Hi,
Den Gedanken hatte ich auch schon. Dann habe ich die Datensatzgröße halbiert, leider ohne Verbesserung, d.h. der Effekt bleibt genauso.
Leider hab ich bei dem Thema 'Caching' keine Ahnung, da ich Programmieren gelernt habe, als man noch strukturiert Programmiert hat .. :-)
Tomy
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TomyN,
30. Nov 2020
Guter Gedanke. Gibt es eine Möglichkeit das irgendwie zu überprüfen ('COMMAND_QEUE_OVERFLOW_CALLBACK' oder so?)