Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

Geshwindigkeit?> Nichts Vs Round, Round gewinnt, aber wieso?!

  Alt 19. Apr 2018, 17:38
Hallo, tut mir leid wegen Titel, mir fiel kein besserer ein.

Hier ein für mich noch nicht erklärbares Phänomen.
Ich lasse 500tausend mal was machen um Zeit zu messen wie lange es braucht.
Nachdem ich festgestellt habe das STR langsamer ist habe ich in der Funktion alles deaktiviert.
Programm ausführen lassen und mich wundert das Ergebniss (siehe Bild).
Wie kann etwas das nichts macht mehr Zeit kosten als etwas das was macht?


Delphi-Quellcode:
function EuroToCt (const Euro: Extended) : Int64;
var
 tmp : String;
begin
// Str(euro*100:8:0,tmp);
// Result := StrToInt(tmp);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  Ticks1, Ticks2 : UInt64;
  c: Int64;
  a: Double;
begin
 a := 1.71;
 Memo1.Clear;
 Ticks1 := GetTicks;
 for I := 0 to 500000 do c := Round(a*100);
 Ticks1 := GetTicks - Ticks1;
 Ticks2 := GetTicks;
 for I := 0 to 500000 do c := EuroToCt(a);
 Ticks2 := GetTicks - Ticks2;
 Memo1.Lines.Add(IntToStr(Ticks1)+' ROUND');
 Memo1.Lines.Add(IntToStr(Ticks2)+' STR');
end;
Miniaturansicht angehängter Grafiken
mybug.jpg  
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat