Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Firemonkey TListbox Performanceprobleme (https://www.delphipraxis.net/179545-firemonkey-tlistbox-performanceprobleme.html)

Peter666 14. Mär 2014 12:41


Firemonkey TListbox Performanceprobleme
 
Hi,

ich bin mir sicher das Problem tritt nicht nur bei mir auf, aber die Geschwindigkeit von TListbox unter Android ist im Vergleich zu TListView unterirdisch. Sobald ich eine Listbox auf dem Formular mit mindestens einem Eintrag erstelle geht die Performance in den Keller. Das ganze konnte ich nur unter Android beobachten, aber da ist das so massiv das es sich gar nicht lohnt auch nur im Ansatz eine Listbox zu verwenden. Ähnliches gilt für TSwitch.
Das es anders geht, sieht man bei Listview. Ich hab leider keinen Eintrag bei QC gefunden der darauf schließen lässt, das das Problem bekannt ist bzw. behoben werden kann. Ich sehe aber auf die schnelle auch nicht woran es liegt. Die Zeichenroutinen sind ja PaintTo in TControl und werden für andere Objekte ebenso benutzt. Es muss also irgendwo anders eine Performanceursache geben.

Harry Stahl 14. Mär 2014 23:27

AW: Firemonkey TListbox Performanceprobleme
 
Stimmt, die Listview ist schneller. Aber geht es um Erstellung der Inhalte oder Anzeige? Beides hängt ja oft zusammem. Verwendest Du auch Listbox.items.beginupdate, vor der Änderung der
Inhalte bzw listbox.items.endupdate danach? Dies erbringt einen enormen Geschwindigkeitsvorteil (und gilt bei allen Firemonkey-Komponenten, wo es um die Anzeige geht).

RWarnecke 15. Mär 2014 07:17

AW: Firemonkey TListbox Performanceprobleme
 
Die Listbox unter Firemonkey ist nur für wenige Objecte gedacht. Wenn Du mehrere hunderte oder tausende Objecte in einer Liste darstellen und auch laden möchtest, dann solltest Du immer auf die ListView zurückgreifen. Zudem hat die ListView noch den Vorteil, dass diese hier mein Einstellungsmöglichkeiten hat, gegenüber der TListBox.

Peter666 15. Mär 2014 08:13

AW: Firemonkey TListbox Performanceprobleme
 
Ich hab nur 10 Einträge drin und aktualisiere deren Details alle 1000ms. Auch wenn ich die Detailinfos nicht aktualisiere, dann kann es passieren dass die Applikation beim Scrollen auf meinem Nexus dazu führt das die "Applikation reagiert nicht"-Meldung kommt. Listview ist in dem Fall zum Glück eine Alternative, aber meine Settings habe ich in einer Listbox. Da sind 10 Einträge mit 2 Editfeldern und 2 Switches. Wobei ich die Switches in Checkboxen umwandeln muss bei Android. Die sind nämlich auch erstaunlich unperformant.
Schade das ich das Design erst auf IOS getestet habe und nun erst unter Android gegenchecke. Ich hoffe es wird noch etwas an der Performanceschraube gedreht, sonst schmeiße ich die Visualisierung über Bord und nutze die nativen Anzeigen von DPF. Da muss ich mich allerdings auch erst einarbeiten und der Gedanke dann für iOS und Android separate Formulare zu machen ist zwar nicht so schlimm, aber ich habe halt auch viele eigene Komponenten die ich selber erstellt habe (Gauges, Diagramme etc) und die zu portieren hab ich noch keinen Plan.

Ist vielleicht nicht so ganz in dem Thread passend, aber warum ist ein FillEllipse nicht wirklich eine Ellipse, sondern besteht unter iOS und Android aus einer hand voll Ecken? Kann man die Anzahl der verwendeten Polygone erhöhen?

Harry Stahl 15. Mär 2014 12:48

AW: Firemonkey TListbox Performanceprobleme
 
Also wie gesagt, die Listview ist schneller. Aber relevant wird das erst wenn man mehr als 100 Listbox-Einträge hat. Bis dahin sind ListboxItem-Einträge incl. Detail-Anzeige flüssig zu verwenden.

10 Einträge, wie von Dir beschrieben, sollte also überhaupt kein Problem sein.

Vielleicht liegt es auch an einer speziellen Konstruktion von Dir?

Wie hast Du die Listbox konkret aufgebaut? Sind die von Dir erwähnten Edit-Felder im ListboxItem drin, und die Switches ebenso?

Ohne genauere Infos ist es leider wie stochern im Nebel, am Besten wäre, Du könntest ein kleines Source-Code-Beispiel posten oder ein Mini-Projekt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz