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