Hallo,
wie denn, wo denn, was denn?
0,5 Sekunden für 5e6 Aufrufe sind 100 ns / Aufruf ~ 320 Takte bei mir.
Was soll den mit 15 Sekunden nicht stimmen, zu langsam / zu schnell ?
Ladet doch die
unit runter und schaut in den Quelltext.
Delphi-Quellcode:
procedure TLInit;
var
i : longInt;
begin
setlength(TL,FeldGroesse);
randomize;
TL[0].card := $04030201;
TL[1].card := $03040201;
TL[2].card := $04020301;
TL[3].card := $02040301;
TL[4].card := $03020401;
TL[5].card := $02030401;
TL[6].card := $04030102;
TL[7].card := $03040102;
TL[8].card := $04010302;
TL[9].card := $01040302;
TL[10].card := $03010402;
TL[11].card := $01030402;
TL[12].card := $04020103;
TL[13].card := $02040103;
TL[14].card := $04010203;
TL[15].card := $01040203;
TL[16].card := $02010403;
TL[17].card := $01020403;
TL[18].card := $03020104;
TL[19].card := $02030104;
TL[20].card := $03010204;
TL[21].card := $01030204;
TL[22].card := $02010304;
TL[23].card := $01020304;
For i := 24 to high(TL) do
TL[i] := TL[random(24)];
end;
Die obere Ausgabe bezieht sich auf 1e9 (= 1e5*1e4) Aufrufe.
Also Runden = 100000 (1e5) mal wird ein High(TL)+1=10000 (1e4)elementiges Testfeld mit zufälligen Werten abgefragt.
Delphi-Quellcode:
StartTimer;
For j := 1 to RUNDEN do
For i := High(TL) Downto 0 do
begin
TestWert.Card := TL[i].card;
Test(TestWert);
// Prüfen auf Fehler
IF TestWert.card <> Res then
begin
EXIT;
end;
end;
StoppTimer;
Die unter Ausgabe bezieht sich auf 1e8 DIV 24 Aufrufe.
Also Runden = 4'166'666 mal wird ein High(TL)+1=24 elementiges Testfeld mit allen Möglichkeiten abgefragt.
Rein zufällige Werte sind also eine Bremse.
Gruß Horst