Bestimmter ASM-Befehl zur Code-Optimierung gesucht.
Verfasst: 26.07.2007 03:41
Wenn ich Geschwindigkeitsvergleiche zwischen verschiedenen Variationen einer Routine mache, so stelle ich immer wieder fest, das eine identische Routine einige Zeilen später im Code erheblich länger oder kürzer braucht als die exakt gleiche Routine an einer anderen Stelle.
Zur Zeitmessung nutze ich bereits einen HQ-Timer, was diese Fehlerquelle schon mal minimiert - aber die Unterschiede sind ohnehin so enorm dass selbst ElapsedMilliseconds() keine Probleme damit hätte diese zu messen.
So braucht z.B. von 2 identischen und aufeinander folgenden For/Next-Leerschleifen die eine 1458ms und die andere ganze 2279ms.
Dies mach einen Geschwindigkeitsunterschied von fast 60% aus.
Ich kann mir dies nur dadurch erklären, dass sich die Routinen an zwei verschiedenen Stellen im Speicher befinden und die eine halt etwas optimaler liegt als die andere.
Soweit ich mich erinnern kann hatte remi_meier oder Deem mal in einem seiner BP-Optimizer einen ASM-Befehl in den Code eingefügt, der sicher stellt, dass der folgende Befehl auf einer durch 4 teilbaren Speicherstelle beginnt (Zwischenräume wurden mit NOP aufgefüllt).
Ich würde gerne mal ausprobieren ob sich die Unterschiede dadurch reduzieren lassen können.
Kennt zufällig jemand von Euch diesen ASM-Befehl bzw. diese Optimierungsmöglichkeit?
Schon mal vielen Dank im Voraus,
PureLust.
Zur Zeitmessung nutze ich bereits einen HQ-Timer, was diese Fehlerquelle schon mal minimiert - aber die Unterschiede sind ohnehin so enorm dass selbst ElapsedMilliseconds() keine Probleme damit hätte diese zu messen.
So braucht z.B. von 2 identischen und aufeinander folgenden For/Next-Leerschleifen die eine 1458ms und die andere ganze 2279ms.
Dies mach einen Geschwindigkeitsunterschied von fast 60% aus.
Ich kann mir dies nur dadurch erklären, dass sich die Routinen an zwei verschiedenen Stellen im Speicher befinden und die eine halt etwas optimaler liegt als die andere.
Soweit ich mich erinnern kann hatte remi_meier oder Deem mal in einem seiner BP-Optimizer einen ASM-Befehl in den Code eingefügt, der sicher stellt, dass der folgende Befehl auf einer durch 4 teilbaren Speicherstelle beginnt (Zwischenräume wurden mit NOP aufgefüllt).
Ich würde gerne mal ausprobieren ob sich die Unterschiede dadurch reduzieren lassen können.
Kennt zufällig jemand von Euch diesen ASM-Befehl bzw. diese Optimierungsmöglichkeit?
Schon mal vielen Dank im Voraus,
PureLust.