Einzelnen Beitrag anzeigen

s-off
(Gast)

n/a Beiträge
 
#9

Re: Aus wievielen Ziffern besteht meine Ganzzahl??

  Alt 16. Jan 2008, 16:03
Tatsächlich,
habe mal ein paar Messungen mit folgendem Code durchgeführt:
Delphi-Quellcode:
Function TForm1.DivMethod(_Value: Integer): Integer;
Begin
   Result := 0;

   While _Value > 0 Do Begin
      _Value := _Value Div 10;
      Inc(Result);
   End;
End;

Function TForm1.StrMethod(_Value: Integer): Integer;
Begin
   Result := Length(IntToStr(_Value));
End;
wobei ich jeweils eine zehnstellige Zahl übergeben habe.

Bei einmaligem Aufruf der beiden Funktionen ergab sich im Durchschnitt (bei 10 Testläufen) ein auf die Laufzeit bezogener Faktor von 10,29 zu Gunsten der DivMethod-Funktion.

Für den einmaligen Gebrauch ist diese also tatsächlich deutlich schneller.

Anschliessend habe ich die Funktionen 100000 mal aufrufen lassen. Hier sinkt der Faktor allerdings auf minimale 1,10 ab.

Nun meine Frage: Wie kommt das? Werden da irgendwelche Werte 'zwischengespeichert' und wiederverwendet, so dass auf Dauer gesehen die StrMethod-Methode vielleicht sogar schneller werden würde als die DivMethod-Methode?
  Mit Zitat antworten Zitat