Hallo,
@dano:
den Quelltext in seiner ganzen "Schönheit" kann man auch anhängen
Ich habe es auf Lazarus umgemünzt.
Dummy gibt als Funktionswert einfach das richtige Ergebnis zurück, um die Zeit des reinen aufrufens rauszurechnen.
Ich habe die
Unit mal angehängt, sollte auch mit Delphi funktionieren, damit Du einen Vergleich starten kannst.
Delphi-Quellcode:
MaxRound 1000000000
Tests mit Dummy
Anzahl: 1000000000 Ticks: 13437923 ms: 4311,708
Tests mit Selectionsort3Down
Anzahl: 1000000000 Ticks: 85371524 ms: 27392,338
Tests mit NetworkSort2
Anzahl: 1000000000 Ticks: 79294972 ms: 25442,618
Tests mit SelectionsortASMDown
Anzahl: 1000000000 Ticks: 45523858 ms: 14606,808
Tests mit SelectionsortASMDown2
Anzahl: 1000000000 Ticks: 51604629 ms: 16557,888
Tests mit SelectionsortASMDown2Horst
Anzahl: 1000000000 Ticks: 44724554 ms: 14350,338
Tests mit SelectionsortASMDown3Horst
Anzahl: 1000000000 Ticks: 18670531 ms: 5990,638
Wie Du siehst ist meine Variante3 bei mir erheblich schneller, das heisst aber nicht, dass bei Dir andere Varianten nicht noch schneller sind/sein können.
Gruß Horst
P.S.
Temp.Card := Vaules[Count mod 24];
wäre mir zu langsam und zu regelmässig.
Ich habe mal die Testliste/Values auf 24 beschränkt.
In Wahrheit: Weil dann Tests mit SelectionsortASMDown gewinnt
Delphi-Quellcode:
MaxRound 99999984 ( 1e8 DIV 24 )
Tests mit Dummy
Anzahl: 99999984 Ticks: 1146723 ms: 367,948.3
Tests mit Selectionsort3Down
Anzahl: 99999984 Ticks: 5331997 ms: 1710,838.3
Tests mit NetworkSort2
Anzahl: 99999984 Ticks: 5032214 ms: 1614,648.3
Tests mit SelectionsortASMDown
Anzahl: 99999984 Ticks: 1316565 ms: 422,438.3
Tests mit SelectionsortASMDown2
Anzahl: 99999984 Ticks: 2397344 ms: 769,218.3
Tests mit SelectionsortASMDown2Horst
Anzahl: 99999984 Ticks: 2410761 ms: 773,528.3
Tests mit SelectionsortASMDown3Horst
Anzahl: 99999984 Ticks: 1563923 ms: 501,808.3