Hallo,
ein Anwender stört sich daran, dass mein Programm langsam startet. Mich hat es auch schon gestört. Es gibt viele kleinere Aktionen und einen größeren Block mit 30 Sekunden. Mein Programm ist eine Windows-Anwendung, XE-2,
MDI und Expressbars von DevExpress.
Durch debuggen stellte ich fest, dass die Zeit in der
unit System.Classes hier gebraucht wird:
Delphi-Quellcode:
procedure NotifyGlobalLoading;
var
I: Integer;
G: TList;
begin
G := GlobalLoaded; // performance: eliminate repeated trips through TLS lookup
for I := 0 to G.Count - 1 do
TComponent(G[I]).Loaded;
end;
G.Count ist 726. Das erscheint recht viel, dürfte aber der Anzahl der Komponenten in meinem Programm entsprechen. Ich sehe derzeit auch keine Möglichkeit einen Teil auszulagern, weil DevExpress das Menüband u.a. beim Start ja auch lädt.
Einige Fälle hab eich durchgesteppt. Irgendwann kommt man in procedure TComponent.Loaded; an wo dann Exclude(FComponentState, csLoading); gemacht wird.
Ist jemand ein Problem bekannt und/oder eine Idee wie man das verbessern kann?
Hier ist das auch schon behandelt, ist aber wohl ein anderes Problem.