Dennoch das
inline
nicht vergessen.
Ohne Inline sollte es mit den externen IFs schneller sein, da dort ja nur wenn nötig in die Swap-Prozeduren gesprungen wird,
wärend so immer in die Swap-Prozeduren gesprungen werden muß.
Mit
inline
sollte es keinen Unterschied machen, also in Betug zur Laufzeit, aber der Code wird wenigstens noch kürzer.
Sprünge sind halt nicht so optimial.
Denk dir einfach Folgendes.
- Haus A ist die D4SortByteArray-Prozedur und Haus B ist Swap-Prozedur
- x Personen (einer pro Vergleich/Tausch) machen das Vergleichen (IF) und die wohnen in Haus A
- eine andere Person ist für das Tauschen (Swap) zuständig / inline: x andere Personen sind für das Tauschen (Swap) zuständig
- und du bis der Cheff (D4SortByteArray), welcher die Zahlen (Array) verwaltet
Delphi-Quellcode:
if A.A[0] < A.A[1] then SwapB(A.A[0], A.A[1]);
if A.A[2] < A.A[3] then SwapB(A.A[2], A.A[3]);
if A.A[0] < A.A[2] then SwapB(A.A[0], A.A[2]);
kein Inline:
Zum Vergleich gehst du jetzt in Haus A, fragst den ersten Typen nach seiner Meinung.
Bei positiver Antwort
rennst ins Haus B, läßt tauschen und mußt
zurückrennen, zur zweiten Person in A.
Bei negativer Anwtort
überspringst du den Weg zu B und gehst direkt zum zweiten A.
usw.
= 1 bis 2 Sprünge
mit Inline: (der B hat sich geklont und die sind alle ins Haus A umgezogen)
Zum Vergleich gehst du jetzt in Haus A, fragst den ersten Typen nach seiner Meinung.
Bei positiver Antwort ist der erste B schon da, dreht gleich um, und du stehst auch sofort beim nächsten A.
Bei negativer Anwtort
überspringst du den Weg zu B.
= 1 Sprung
Delphi-Quellcode:
SwapIfLess(0, 1);
SwapIfLess(2, 3);
SwapIfLess(0, 2);
kein Inline:
- Haus A ist die D4SortByteArray-Prozedur und Haus B ist Swap-Prozedur
- eine Person macht das Vergleichen (IF) und wohnt in Haus B
/ inline: x Personen machen das Vergleichen (IF) und wohnen im Haus A
- eine andere Person ist für das Tauschen (Swap) zuständig
/ inline: x andere Personen sind für das Tauschen (Swap) zuständig
- und du bis der Cheff (D4SortByteArray), welcher die Zahlen (Array) verwaltet
Zum Vergleich
gehst du jetzt ins Haus B, fragst den ersten Typen nach seiner Meinung.
Bei positiver Antwort ist der Zweite gleich da, tausch und du
rennst ins Haus A zurück.
Bei negativer Anwtort
rennst du ebenfalls sofort ins A zurück.
= immer 2 Sprünge
mit Inline: (die Bs sind ins Haus A umgezogen)
genauso wie das vorherrige Inline, mit nur einem Sprung