Lustig, wenn man das hier noch einbaut
Delphi-Quellcode:
procedure TArrayOfByteList.Networksort2(var A: TArrayOfByte); register;
Var
T : Byte;
begin
if A.A[0] < A.A[1] then begin T:=A.A[0]; A.A[0] := A.A[1]; A.A[1] := T end;
if A.A[2] < A.A[3] then begin T:=A.A[2]; A.A[2] := A.A[3]; A.A[3] := T end;
if A.A[0] < A.A[2] then begin T:=A.A[0]; A.A[0] := A.A[2]; A.A[2] := T end;
if A.A[1] < A.A[3] then begin T:=A.A[1]; A.A[1] := A.A[3]; A.A[3] := T end;
if A.A[1] < A.A[2] then begin T:=A.A[1]; A.A[1] := A.A[2]; A.A[3] := T end;
end;
Und die Testroutine nach Button2Click aufruft, werden alle folgenden Aufrufe langsamer, packt man den letzten Aufruf an 2.Stelle ist der plötzlich langsamer. Kann es sein, das die CPU sich vielleicht auch warmlaufen muss und diese Tests eh für'n Arm sind?
Mich wundert sowieso, wieso ihr immer dieses 'SelectionSort' optimiert, anstatt den o.g. Code.
Weiterhin sieht es interessant aus, wenn man das TEST-AND-Exchange 'Macro' noch optimiert.
Siehe hier ganz unten.
Andere Quellen probieren SSE2-Instruktionen. Bringt das was? Habe ja selbst keine Ahnung von
ASM.