Thema: Delphi string zum array of char

Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: string zum array of char

  Alt 18. Aug 2004, 23:48
Du hast doch bestimmt nur ein einmaliges Ausführen gemessen, gell? Mach das mal in einer Schleife, so ~10.000.000 mal. Dann wirst du einen kräftigen Unterschied bemerken!

Hab mal grad ausprobiert:
Delphi-Quellcode:
type
  TCharArray = array[0..255] of Char;
  PCharArray = ^TCharArray;
.
.
.
const
  st: string = 'AF724H8u+_99Hqifbq251';
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
var A: TCharArray;
    S: string;
    i: Integer;
    t: Int64;
begin
  S := st;
  t := GetTickCount;
  for i := 1 to 10000000 do
    A := PCharArray(S)^;
  t := GetTickCount - t;
  Form1.Caption := string(A)+' in '+IntToStr(t)+'ms';
end;

procedure TForm1.Button2Click(Sender: TObject);
var A: TCharArray;
    S: string;
    i,m: Integer;
    t: Int64;
begin
  S := st;
  t := GetTickCount;
  for i := 1 to 10000000 do
    for m := 0 to Length(S) do
      A[m] := S[m+1];
  t := GetTickCount - t;
  Form1.Caption := string(A)+' in '+IntToStr(t)+'ms';
end;
Also im ersten Fall mit Cast, im 2. mit Kopierschleife. Und jetzt kommt der Knaller: Bei 21 Zeichen (wie hier im Bsp.) sind beide Verfahren tatsächlich faktisch gleich schnell. Mit weniger Zeichen ist die Kopierschleife erheblich schneller !!
Macht ein Cast so einen Aufwand? Ist doch im Grunde keine Arbeit hinter, oder? Ich hätte bis gerade noch meinen Ar*** darauf verwettet, dass der Cast immer schneller ist .


gruss, ein verdutzter
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat