Цитата:
Сообщение от NoSilence
А я предполагал, что есть какой-то профит в быстродействии.
|
Выигрыш в быстродействии теоретический, за счет отказа от индексной адресации и (в теории) уменьшения надобности в регистрах для хранения отдельно начала строки и отдельно индекса.
Код:
function Rewind(Source: string): string;
var
Src, Dst: PChar;
L: Integer;
begin
if Source <> '' then
begin
L := Length(Source);
SetLength(Result, L); // выделение памяти
Src := Pointer(Source);
Dst := @Result[L];
while Src^ <> #0 do
begin
Dst^ := Src^;
Inc(Src);
Dec(Dst);
end;
end
else
Result := ''; // nil в nil
end;