2010-06-23 13 views
7

Wenn Sie auf ein WPF-Steuerelement über den nachfolgenden Code zugreifen müssen, müssen Sie in XAML das Attribut Name angeben.Keine Angabe von Steuerelementnamen in WPF ... Leistungseffekt

In vielen Fällen müssen Sie nicht auf die Steuerelemente aus dem dahinterliegenden Code zugreifen, da viele Codierungslogiken wie die Bindung besser direkt in XAML angewendet werden.

Meine Frage ist: Gibt es einen Leistungszuwachs von nicht liefert das Name-Attribut zu Kontrollen? Oder ist es eine gute Angewohnheit, allen Steuerelementen auf der Seite Namen zu geben?

Antwort

14

Ja, es gibt definitiv einen Leistungsgewinn, wenn man keine "name" -Attribute liefert.

WPF "Name" Mechanismus kann nützlich sein, aber es nutzt zusätzliche RAM und CPU in mehrfacher Hinsicht:

  1. Der XAML-Compiler einen zusätzlichen Slot in der Klasse für jedes benannte Objekt zuordnet (je 4 Byte)
  2. der XAML-Compiler fügt Ihre Klassencode jedes dieser
  3. die BAML Prozessor ruft zurück Ihren Code Anzeige zu initialisieren den Namen jeweils
  4. der BAML Prozessor fügt auch den Namen in ein Wörterbuch zu initialisieren, eine zusätzliche 20 erforderlich + Bytes pro Name
  5. Wenn Namen aufzublicken Sie wirklich brauchen Sie in Wörterbuch Kollisionen mit Namen laufen können Sie wirklich nicht

Für eine einfache Steuerung benötigen, einen Namen addieren die Kosten erhöhen zu steuern, dass die Kontrolle von 5 verwenden % oder so. Das ist nicht viel, aber warum verschwenden Sie Ihre CPU-Zyklen und Ihr RAM auf unnötige Namen?

Fazit: Wenn Sie Namen für Ihre Objekte nicht benötigen, benennen Sie sie nicht. Normalerweise ist der Inhalt oder die Bindung eines Steuerelements ausreichend, um den Zweck eines Steuerelements zu ermitteln. Und wenn das nicht genug Dokumentation ist, können Sie immer XML-Kommentare verwenden, die kostenlos sind.

ich würde sagen, es ist eine sehr schlechte Gewohnheit alle Kontrollen zu nennen, nicht nur wegen der Kosten, sondern auch, weil es Ihnen auf Ihre Kontrollen nach Name zu verweisen fördert, anstatt die richtige Ansicht Modell und Bindetechniken. Die meisten meiner XAML verwenden nicht "Name" für alle Kontrollen, geschweige denn alle von ihnen.

+0

Ich fühle mich schlecht, jetzt, da ich immer noch nicht verbindlich bin, und ich muss alle meine Steuerelemente, die mit Daten gefüttert werden. : \ Alte Frage, aber wirklich gut. +1 für Antwort und Frage – Malavos

Verwandte Themen