Un progetto a cui sto lavorando soffre di alcuni problemi di prestazioni minori. Il nostro team sta eseguendo molti piccoli miglioramenti per ottenere maggiori guadagni in termini di prestazioni. Siamo riusciti ad aiutare l'applicazione con alcune modifiche più ovvie, e abbiamo cercato di legare i dati per fornire ulteriori miglioramenti. So che la modalità di associazione predefinita è TwoWay, ma la maggior parte dei nostri binding non richiede il binding TwoWay. Varrebbe la pena passare il nostro tempo e specificare esplicitamente la modalità come OneWay in cui abbiamo accettato l'impostazione predefinita?Esiste un vantaggio in termini di prestazioni quando si specifica esplicitamente il binding OneWay durante l'impostazione dei binding in WPF?
risposta
Siamo spiacenti, la prima versione è sbagliata al 100% (grazie, @Jeffora). Lo tengo qui, altrimenti i commenti non hanno senso.
Un'associazione unidirezionale non ha bisogno di impostare una connessione con la sorgente per ascoltare le notifiche di modifica, quindi richiede meno memoria, ma per quanto riguarda la velocità, non immagino che ci sia una differenza .
Seconda versione: Entrambi i binding OneWay e TwoWay si abbonano all'origine per le modifiche, al fine di aggiornare la proprietà target. Quindi, la differenza di prestazioni è l'aggiornamento della proprietà di origine, che potrebbe avere un impatto, a seconda di ciò che il resto del software fa quando si verifica l'aggiornamento.
Se le prestazioni sono critiche e lo scenario non necessita di aggiornamenti target, l'utilizzo del binding OneTime potrebbe essere un'opzione.
Colgo l'opportunità di questa correzione per chiedere se hai profilato la tua app, al fine di trovare gli hotspot. La regola 80/20 (o evento 90/10) è abbastanza frequente, vale a dire una piccola quantità di account di codice per la maggior parte del tempo trascorso. Senza saperlo, gli sforzi di ottimizzazione potrebbero non ottenere alcun guadagno.
Interessante. Quindi, se parliamo di diverse centinaia di questi binding, è pensabile che il cablaggio di quegli eventi di ascolto manchi dei cicli cpu durante la creazione della finestra. Quindi potrebbe essere che ci sia un problema di velocità e memoria, giusto? – Kilhoffer
Corretto, stavo scontando il tempo necessario per questa configurazione della connessione, ma con migliaia di essi, potrebbero essere importanti. – Timores
Un collegamento unidirezionale continua a ricevere l'origine per la notifica di modifica: non è un bind di una volta. – jeffora
- 1. Quando utilizzare Path in WPF Binding?
- 2. WPF Expander IsExpanded binding
- 3. Annulla in binding WPF
- 4. Come rilevare il binding dei dati completato in WPF
- 5. WPF Binding modalità predefinita
- 6. WPF Casting in Binding Path
- 7. stili e binding in WPF
- 8. Binding comando WPF in DataTemplate
- 9. DataTrigger Binding in stile WPF
- 10. Cosa significa "{Binding Path =.}" Nel binding WPF?
- 11. TabItem Binding WPF
- 12. WPF Binding FallbackValue impostato su Binding
- 13. Rimuovere il binding in WPF utilizzando il codice
- 14. WPF Image Command Binding
- 15. Esiste un vantaggio in termini di prestazioni nell'utilizzo di elenchi di lunghezza fissa in Dart?
- 16. wpf textbox text binding
- 17. WPF Binding Combobox
- 18. WPF Tooltip Binding
- 19. Esiste un modo per eseguire correttamente il debugging dei binding di dati WPF?
- 20. OneWay vincolante per la proprietà IsChecked di ToggleButton in WPF
- 21. WPF DataTemplate e Binding
- 22. gestore di eventi wpf binding in stile
- 23. WPF One Way Binding broken
- 24. Cosa fa il flag PathGeneratedInternally in un binding WPF?
- 25. Comando di binding in WPF con MVVM
- 26. DateTimePicker wpf toolkit binding
- 27. Come riutilizzare WPF DataGridTemplateColumn (incluso il binding)
- 28. Esiste un vantaggio in termini di prestazioni utilizzando readOnly nei criteri di ibernazione?
- 29. WPF Associazione proprietà Binding in HierarchicalDataTemplate
- 30. Sfondo cella WPF DataGrid utilizzando il binding
Esistono alcune situazioni di associazione riconosciute da Microsoft per causare perdite di memoria come da questo errore: http://support.microsoft.com/kb/938416 – jeffora