![]() |
AW: ListView Performance bei vielen Datensätzen (FMX)
Zitat:
Was "lange" braucht ist
Delphi-Quellcode:
Diese Funktion braucht für 138902 Datensätze 2309 ms zum einfügen in die Listview. Das sind 60 Einträge pro ms. Deshalb "langsam" in Anführungszeichen.
while not Query.Eof do
begin lListViewItem := ListView.Items.Add; lListViewItem.Objects.FindObjectT<TListItemText>('Field1').Text := lField1.AsString; lListViewItem.Objects.FindObjectT<TListItemText>('Field2').Text := lField2.AsString; lListViewItem.Objects.FindObjectT<TListItemText>('Field3').Text := lField3.AsString; lListViewItem.Objects.FindObjectT<TListItemText>('Field4').Text := lField4.AsString; lListViewItem.Tag := Query.RecNo; Query.Next; end; Der 2. Aufruf der "Lange" dauert ist das Anzeigen der Listview, also das setzen von Listview.Visible = true. Das dauert 907 ms. Auch hier ist deshalb langsam in Anführungszeichen geschrieben. Nochmal zum Thema SQL. Die Query ist bereits geöffnet (Filter werden direkt nach der Anmeldung gesetzt und öffnen wird im Hintergrund durchgeführt) , also keine Möglichkeit hier sehr sicher keine Optimierung zu erreichen. |
AW: ListView Performance bei vielen Datensätzen (FMX)
Zitat:
1. Lesen aus der Query (in lokale Dummy-Veriablen) 2. Schreiben (von Dummy-Werten) in das Listview, so viele, wie die Query Einträge hat Danach weißt, du, wie hoch der Anteil der jeweiligen Funktionalität ist. Darauf basierend kann man dann nach weiterer Optimierung suchen. |
AW: ListView Performance bei vielen Datensätzen (FMX)
Von dem FMX-Dingern hab ich keine Ahnung. Aber kann man sich die 4 Spalten nicht vorab irgendwie merken, statt sie bei jedem Datensatz mit FindObjectT... neu zu suchen?
|
AW: ListView Performance bei vielen Datensätzen (FMX)
Zitat:
|
AW: ListView Performance bei vielen Datensätzen (FMX)
Zitat:
|
AW: ListView Performance bei vielen Datensätzen (FMX)
Wäre hier nicht ein TListView im "Virtualmode" sinnvoll?
![]() |
AW: ListView Performance bei vielen Datensätzen (FMX)
Zitat:
|
AW: ListView Performance bei vielen Datensätzen (FMX)
Zitat:
|
AW: ListView Performance bei vielen Datensätzen (FMX)
Zitat:
Laden der Daten in 3 unterschiedliche TArray<String> Variablen - 620 ms Laden des Arrays in die Listview mit "add" befehl - 1611 ms Umstellen auf Visible=true - 1140 ms Zusammen 3371 ms Am meisten "stören" tatsächlich die 1140 ms im Visible:=true teil, weil da auch die Ladeanimation hängt. :-/ |
AW: ListView Performance bei vielen Datensätzen (FMX)
Chat-GPT glaubt, dass es auch beim FMX-ListView einen VirtualMode gibt: ListView1.OnUpdateObjects
Wenn das stimmt (wie schon erwähnt, hab ich keine Ahnung von FMX), könnten 2 der 3 Prozesse extrem beschleunigt werden. Selbst das Visible:=true wäre dann extrem schnell. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz