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 geringeren Rechendauer denn eine messbare Beschleunigung (aber keinenfalls eine Verlangsamung).
Es ist schon sehr interessant zu sehen, wie sich die Umgruppierung einer Inc Anweisung gleich mal deutliche Auswirkungen hat.
Aktuell schauen die Indices so aus
Code:
//Schleife Anfang
i5:= Succ(i + n4 -j); //+1;
i1:= i + j - 1;
Inc(i, id); //Hier gut für kurze FFT
i2:= i1 + n4;
i3:= i1 + n4 + n4; // i2 + n4;
i4:= i1 + n4 + n4 + n4; // i3 + n4;
i6:= i5 + n4;
i7:= i5 + n4 + n4; // i6+n4;
i8:= i5 + n4 + n4 + n4; // i7+n4;
//Berechnung der Daten
// Inc(i,id); Hier gut für lange FFT
//Schleife Ende
Das Inc(i,id) an der aktuelle Stelle liefert für kurze FFTs eine etwas höhere Geschwindigkeit (1-2%), während bei langen FFTs eine Position direkt am Ende der Schleife einen bessere Performance liefert. Für spezielle Sachen (SSE oder Rechnen auf der Grafikkarte etc.. ) fehlt mir das Basiswissen. Dann würde ich auch eher auf fertig Lösungen (Intel, FFTm(?)) o.ä. gehen.