Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[UserControls] Geschwindigkeitsdefizit³ ?
jreusch
myCSharp.de - Member

Avatar #avatar-3346.jpg


Dabei seit:
Beiträge: 296

Themenstarter:

[UserControls] Geschwindigkeitsdefizit³ ?

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
reloop
myCSharp.de - Member

Avatar #avatar-3256.jpg


Dabei seit:
Beiträge: 139

beantworten | zitieren | melden

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
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von reloop am .
private Nachricht | Beiträge des Benutzers
jreusch
myCSharp.de - Member

Avatar #avatar-3346.jpg


Dabei seit:
Beiträge: 296

Themenstarter:

beantworten | zitieren | melden

Zitat von winSharp93
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.
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
jreusch
myCSharp.de - Member

Avatar #avatar-3346.jpg


Dabei seit:
Beiträge: 296

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers