Hallo,
ja, die CPU muss er warm laufen/auf de höhere Taktzahl gebracht werden.
Dass sollte Init oder Formcreate aber schon vollbracht haben.
Soweit ich das sehe, benutzen doch alle
ASM-Versionen maximal 5 Tauschungen.
und die
ASM Version von NetworkSort2, der Name ist einfach falsch gewählt.
Ich habe es einfach von dano kopiert und dann schrittweise geändert.
Vielleicht kannst Du , Asnet, und andere
testvier.zip mal testen und Deine Ergebnisse nennen.
Vielleicht ist TList in Delphi wesentlich schneller implementiert, mit freepascal ist es extrem langsam.
Ein Test mit einem Durchlauf mit einem Feld mit 10e8 Elementen ist genauso schnell wie 3052 mal ein Feld von 32767 Elementen:
Code:
MaxRound 100000000
Tests mit Dummy
Anzahl: 100000000 Ticks: 1064477 ms: 341,550
Tests mit Selectionsort3Down
Anzahl: 100000000 Ticks: 9227711 ms: 2960,816
Tests mit NetworkSort2
Anzahl: 100000000 Ticks: 8071028 ms: 2589,681
Tests mit SelectionsortASMDown
Anzahl: 100000000 Ticks: 5225017 ms: 1676,506
Tests mit SelectionsortASMDown2
Anzahl: 100000000 Ticks: 5861757 ms: 1880,811
Tests mit SelectionsortASMDown2Horst
Anzahl: 100000000 Ticks: 5068068 ms: 1626,147
Tests mit SelectionsortASMDown3Horst
Anzahl: 100000000 Ticks: 2251951 ms: 722,564
An den angegeben Links wird ja ein Feld von 6 Longint in 31.24 Takten sortiert.
Aber das ist auf einer 64-Bit Maschine getestet, da gibt es ja viel mehr freie Register.
MMX oder SSE Versionen wären vielleicht auch interessant.
Eigentlich frage ich mich nur, wozu man das braucht
Gruß Horst