Hallo,
ich benutze eine TObjectList um eine Liste von Objekten zu speichern.
Jetzt habe ich folgendes festgestellt: Je mehr Items in der List desto langsamer wird das ganze. Bei 1 Item sind es noch Ticks, bei 15 Items 140 Ticks
Ich benutze folgenden Code, den ich als "schuldigen Isolieren" konnte.
Delphi-Quellcode:
procedure Changed(Sender: TObject);
var
Index: Integer;
begin
if (Sender is TSynEdit) then
Index := FOwner.FSynEdit.IndexOf(Sender) else
Index := FOwner.FRichEdit.IndexOf(Sender);
if @FOnChange <> nil then
FOnChange(FDocuments.Document[Index]); // hier Geschwindigkeitseinbruch
end;
Der Zugriff auf "Document[Index]" wird durch einen getter erledigt, der so aussieht:
Delphi-Quellcode:
function TXGENDocumentList.GetItem(Index: Integer): TXGENDocument;
begin
Result := TXGENDocument(FList.Items[Index]);
end;
Wobei FSynEdit, FRichEdit und FList eine TObjectList sind.
Wie lässt sich dieser extreme Geschwindigkeitseinbruch erklären und wie kann ich ihn beheben?
mfG
mirage228
[/delphi]