Einzelnen Beitrag anzeigen

Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#1

Langsamer Zugriff auf Items einer TObjectList

  Alt 7. Mai 2004, 16:17
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]
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat