Laden...

[UserControls] Geschwindigkeitsdefizit³ ?

Erstellt von jreusch vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.845 Views
jreusch Themenstarter:in
296 Beiträge seit 2007
vor 13 Jahren
[UserControls] Geschwindigkeitsdefizit³ ?

Hallo liebe myCSharp'ler,

ich bin was Silverlightprogrammierung angeht ein Neueinsteiger und habe die letzten 3 Monate mit 3 Kommiltonen an einem etwas größeren Studienprojekt gearbeitet.

Einarbeitung, Implementierung, etc. gingen ganz gut von der Hand.
Jetzt geht es noch um Codeoptimierungen und da haben wir teilweise sehr hohe Ladezeiten.

Nach etwas Recherche im Code habe ich rausbekommen, dass das Erstellen von Usercontrols teilweise ewig dauert...

Wir haben unser Projekt nach alter OO-Manier ziemlich modular aufgebaut - also relativ atomare UC-Bausteine erstellt, die wir einfach in vielen Masken nutzen.

Ist ja alles schön und gut... aber wenn meine Page nun 10sek Lädt, nur weil 30-40 (keineswegs komplexe) Usercontrols erstellt werden, ist das schon schade.

Gibt es da einen guten Weg das schnell zu bekommen?

Viele Grüße

5.742 Beiträge seit 2007
vor 13 Jahren

Hallo myUnderTakeR,

lasst mal einen Profiler mitlaufen.
Dann solltet ihr relativ gut sehen, was tatsächlich lange dauert.

Was macht ihr den in den Konstruktoren der Usercontrols?

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

sowas kann verschiedenste Gründe habe. 40 UserControls klingt erstmal nicht viel, aber wenn man intensiv mit Styles und Templates arbeitet und die GUI auch noch ungünstig verschachtelt können da schon zighunderte Controls rauskommen die gerendert werden müssen. Dann sieht man oft den Fehler das falsche Controls verwendet werden (Bsp. Grid was layouttechnisch teuer ist, oft aber auch gar nicht benötigt wird). Umso tiefer die Verschachtelungstiefe der Controls wird, umso langsamer wirds da mehr Ebenen im Layout und Measurement Schritt durchlaufen werden müssen. Auch werden meist aus Gewohnheit viel zu oft UserControls verwendet obwohl es in Silverlight ganz andere Lösungsmöglichkeiten gäbe (in WPF ist das aber noch extremer)

Baka wa shinanakya naoranai.

Mein XING Profil.

139 Beiträge seit 2010
vor 13 Jahren

Hallo talla, fande den Beitrag sehr interessant. Könntest du einen Verweis oder Artikel nennen, wo die richtige Verwendung von Controls (Bsp. Grid nicht als Layoutbasis) o.ä. ausführlicher beschrieben ist?

Danke für die Mühe und pardon für das OT.

Beste grüße,
reloop

jreusch Themenstarter:in
296 Beiträge seit 2007
vor 13 Jahren

Hallo myUnderTakeR,

lasst mal einen Profiler mitlaufen.
Dann solltet ihr relativ gut sehen, was tatsächlich lange dauert.

Was macht ihr den in den Konstruktoren der Usercontrols?

Das haben wir ja schon gemacht - deswegen weiß ich ja dass es an den Usercontrols liegt.

Die Konstruktoren machen selbst nicht viel...
InitializeComponents() kostet halt immer 200-300ms.

Also müssen die Dinger wohl doch besser gestaltet werden.
Styles und Templates liegen tatsächlich viele drauf - wir versuchen mal da etwas runterzufahren.

@reloop:
So OT find ich das ganze nicht mal. So ein guter Artikel würde mir bei meinem Problem bestimmt auch helfen.

6.862 Beiträge seit 2003
vor 13 Jahren

Online hab ich grad nichts zur Hand, aber es gibt ein nettes Buch was ich empfehlen kann: WPF Control Development Unleashed

Im Prinzip gehts einfach darum nur das zu nehmen was man auch wirklich brauch. WPF macht das viel leichter als Windows Forms. Um bei den Panels als Beispiel zu bleiben: VS und Blend verwenden für die absolute Positionierung von Controls das Grid mit entsprechenden Margin Properties der Controls - sehr vielseitig, aber unnötig - da tuts auch nen Canvas genauso solange keine gridspezifischen Sachen verwendet werden.

Baka wa shinanakya naoranai.

Mein XING Profil.

jreusch Themenstarter:in
296 Beiträge seit 2007
vor 13 Jahren

Hallo nochmal,

es lag tatsächtlich daran, dass einige Styles und Templates unnötig mehrfach gesetzt wurden.
Jetzt konnte ich die Ladezeit auf ein Zehntel reduzieren - damit kann ich leben.

Vielen Dank!

Grüße