Ein Projekt, an dem ich arbeite, leidet an einigen kleineren Leistungsproblemen. Unser Team führt viele kleine Verbesserungen durch, um größere Leistungssteigerungen zu erzielen. Es ist uns gelungen, die Anwendung durch offensichtliche Änderungen zu verbessern, und wir haben uns auf die Datenbindung konzentriert, um einige zusätzliche Verbesserungen bereitzustellen. Ich weiß, dass der Standard-Bindungsmodus TwoWay ist, aber die meisten unserer Bindungen erfordern keine TwoWay-Bindung. Wäre es unsere Zeit wert, den Modus als OneWay explizit anzugeben, wo wir den Standard akzeptiert haben?Gibt es einen Leistungsvorteil beim expliziten Angeben der OneWay-Bindung beim Einrichten von Bindungen in WPF?
Antwort
Sorry, 1. Version ist 100% falsch (Danke, @ Jeffora). Ich behalte es hier, sonst machen die Kommentare keinen Sinn.
Eine unidirektionale Bindung muss keine Verbindung mit der Quelle herstellen, um auf Änderungsbenachrichtigungen zu warten, so dass weniger Arbeitsspeicher erforderlich ist. Was die Geschwindigkeit angeht, kann ich mir nicht vorstellen, dass es einen Unterschied gibt .
2. Version: Sowohl OneWay- als auch TwoWay-Bindungen abonnieren die Quelle für Änderungen, um die Zieleigenschaft zu aktualisieren. Der Leistungsunterschied ist also die Aktualisierung der Quelleigenschaft, die Auswirkungen haben kann, abhängig davon, was der Rest der Software bei der Aktualisierung tut.
Wenn die Leistung entscheidend ist und Ihr Szenario keine Zielupdates benötigt, kann die Verwendung der OneTime-Bindung eine Option sein.
Ich nutze die Gelegenheit dieser Korrektur zu fragen, ob Sie Ihre App profiliert, um Hotspots zu finden. Die 80/20-Regel (oder das Ereignis 90/10) ist ziemlich häufig, d. H. Eine kleine Menge an Code ist für den Großteil der aufgewendeten Zeit verantwortlich. Ohne es zu wissen, könnten Optimierungsbemühungen überhaupt keinen Gewinn bringen.
Interessant. Wenn wir also davon sprechen, dass mehrere hundert solcher Bindungen aufgebaut sind, ist es denkbar, dass die Verkabelung dieser hörenden Ereignisse beim Erstellen des Fensters CPU-Zyklen aufsaugt. Es könnte also sein, dass es einen Geschwindigkeits- und Speichertreffer gibt, richtig? – Kilhoffer
Richtig, ich habe die Zeit, die für diesen Verbindungsaufbau benötigt wird, nicht berücksichtigt, aber bei Tausenden von ihnen können sie eine Rolle spielen. – Timores
Eine unidirektionale Bindung wartet immer noch auf die Quelle für die Änderungsbenachrichtigung - eine einmalige Bindung tut dies nicht. – jeffora
- 1. Gibt es einen Leistungsvorteil/Nachteil beim Hinzufügen von int-Werten zu doubles?
- 2. Java Singleton vs statisch - gibt es einen echten Leistungsvorteil?
- 3. Gibt es eine Möglichkeit, Bindungen in WPF erneut zu verwenden?
- 4. Probleme beim Einrichten von Lagerfeuer
- 5. Gibt es einen Leistungsunterschied beim Code in der ASPX-Datei?
- 6. Gibt es einen Leistungsvorteil bei der Verwendung von Listen fester Länge in Dart?
- 7. Gibt es ein Hilfsmittel, um beim expliziten Import von Modulen in Haskell zu helfen?
- 8. Probleme beim Einrichten von "Steuerinfo" in iTunesConnect
- 9. Fehler beim Einrichten von Firebase in Xcode
- 10. Gibt es einen spürbaren Leistungsvorteil bei der Eingrenzung des Bereichs von document.getElementsByClassName?
- 11. Probleme beim Einrichten von Funktionszeigern in der Vorlagenklasse
- 12. CA1305: Ausführlichkeit beim Angeben der Kultur
- 13. Gibt es einen Leistungsvorteil durch die Verwendung von readOnly in Hibernate-Kriterien?
- 14. Hört Moq Namespaces beim Einrichten von Mocks?
- 15. MongoDB: Fehler beim Einrichten der Sockets beim Start
- 16. Problem beim Einrichten von Kafka-Umgebung
- 17. Problem beim Einrichten von yii cron job
- 18. Einrichten der Konfigurationseinstellungen beim Schreiben eines Edelsteins
- 19. Leistungsvorteil von Variablendeklarationen in VBA?
- 20. Gibt es einen Fehler in XmlTextReader beim Öffnen leerer Databases?
- 21. Komponententest WPF-Bindungen
- 22. In WPF-Bindungen rückgängig machen
- 23. Gibt es form.onload in WPF?
- 24. Netzwerkfehler beim Einrichten der Kontextzuordnung - IBM Bluemix
- 25. Fehler beim Einrichten von Docker unter Windows
- 26. Einrichten von Maven Ressourcen beim Testen
- 27. Gibt es einen Schaden bei der Ausführung von session_start() beim Erstellen der Seitenanforderung (in php)?
- 28. Anwenden von Filtern beim expliziten Laden verwandter Entitäten
- 29. MySQL brauche Hilfe beim Einrichten von Trigger
- 30. Fehler beim Einrichten von SFML mit Android
Es gibt einige Datenbindungssituationen, die von Microsoft bestätigt wurden, um Speicherlecks gemäß diesem Fehler zu verursachen: http://support.microsoft.com/kb/938416 – jeffora