![]() |
FMX Listbox total lahm
Das Füllen einer FMX-Listbox mit 8000 Einträgen dauert ganze 36 Minuten. :shock:
(VCL unter 1 sec) Gibts da evtl Alternativen? |
AW: FMX Listbox total lahm
1753 ms:
Delphi-Quellcode:
Liegt es vielleicht nicht an der Listbox sondern daran wie Du die Daten erstellst?
procedure TfrmIosMain.FormCreate(Sender: TObject);
var i : integer; dtStart : TDateTime; begin dtStart := Now; for i := 0 to 7999 do ListBox1.Items.Add(Format('%8.8d', [i])); ShowMessage(Format('%d', [MilliSecondsBetween(Now, dtStart)])); end; |
AW: FMX Listbox total lahm
Kann es sein dass du ne IOS-App hattest? Ich hatte ne Firemonkey-HD-Anwendung.
Als IOS-App dauert dein code bei mir 5625 ms. Ich hatte zum Test auch nur das hier:
Delphi-Quellcode:
s:= '1,2,3,4,5,6,7';
for i := 0 to 8000 do ListBox1.Items.Add(s); |
AW: FMX Listbox total lahm
Frische FMX-HD Anwendung:
Delphi-Quellcode:
2425 ms.
uses DateUtils;
{$R *.fmx} procedure TForm3.FormCreate(Sender: TObject); var i : integer; dtStart : TDateTime; begin dtStart := Now; for i := 0 to 7999 do ListBox1.Items.Add(Format('%8.8d', [i])); ShowMessage(Format('%d', [MilliSecondsBetween(Now, dtStart)])); end;
Delphi-Quellcode:
1690 ms. Hast Du vielleicht ein OnChange oder sowas an der Listbox?
ListBox1.BeginUpdate;
for i := 0 to 7999 do ListBox1.Items.Add(s); EndUpdate; |
AW: FMX Listbox total lahm
Nö, nichts dran. Die Schleife ist der einzige Code.
Werd mal nen anderen PC probieren. :gruebel: Edit: Mist, kann das XE nicht nochmal installieren(nur Trial) |
AW: FMX Listbox total lahm
Kannst ja mal das komplette Miniprojekt anhängen. Dann kann man es mal prüfen ob irgendwas Absonderliches drin steckt. Ansonsten wäre es hilfreich was über den Rechner zu erfahren (OS, Prozessor, Speicher, VM) und vielleicht auch mal Laufzeitmessungen zu machen (Prozessor, Speicher, HD). Und da ja FMX GPU orientiert ist: GRAFIKKARTE und Treiber! Ja, das kommt dann auch auf uns zu dass wir den Kunden bei Problemen nach der Version seiner GK-Treiber fragen müssen.
|
AW: FMX Listbox total lahm
Liste der Anhänge anzeigen (Anzahl: 1)
OK, hier mal das Miniprojekt.
Und die PC-Daten: AMD 64X2 Dual 4200+ 2,21 GHz 2 GB Windows XP SP3 GraKa: RadeonX1800GTO 256MB Wo kann man den Treiber auslesen? Ich seh nur ATI-Display-Driver. Auf meinem MacBookPro hab ich dasselbe Problem, OSX und WindowsXP. Häng bitte mal eine .exe von dir ran, vielleicht geht die ja. |
AW: FMX Listbox total lahm
Es scheint exponentiell von der Anzahl der Elemente der Listbox abzuhängen. Versuch es mal mit Begin/Endupdate, ich habe jetzt dabei eine Geschwindigkeitssteigerung um das 250-fache gemessen :
Code:
Listbox alClient (600x400) mit 1000 Elementen = 5223 ms
ListBox alClient (600x400) mit 2000 Elementen = 28809 ms ListBox alClient (600x400) mit 2000 Elementen Begin/Endupdate = 109 ms ListBox alClient (600x400) mit 8000 Elementen Begin/Endupdate = 1704 ms
Delphi-Quellcode:
Ich habe aber nur 32bit runtime. Hast Du vielleicht 64 erstellt? Das kann ich bei mir nicht testen.
procedure TfrmMain.FormCreate(Sender: TObject);
var i : integer; dtStart : TDateTime; begin dtStart := Now; ListBox1.BeginUpdate; for i := 0 to 7999 do ListBox1.Items.Add(Format('%8.8d', [i])); ShowMessage(Format('%d', [MilliSecondsBetween(Now, dtStart)])); ListBox1.EndUpdate; end; |
AW: FMX Listbox total lahm
Ich habe Deine Anwendung getestet und nach 5 Minuten mit 100% CPU gekillt. Bei mir kompiliert das selbe. Dann Begin/EndUpdate eingefügt. 3160 ms.
|
AW: FMX Listbox total lahm
Komisch. Was ist denn zu deinem ersten Test anders?
Mit Begin/Endupdate sind es jetzt 5219ms. Schon mal wesentlich besser. VCL: 1150ms Das Scrollen in der Box ist aber auch keine Freude. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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 by Thomas Breitkreuz