2015-06-10 15 views
6

Qual è più veloce per una grande collezione vincolante per esempio,singole collezioni osservabili vs filtrata prestazioni Collection Osservabile

Requirement - applicazione e-trading:

prezzo Carta assorbente - che visualizza citazioni/commercio per diversi titoli, per esempio .

Vista principale - Visualizza tutte le virgolette.

Vista Paese - visualizza le quotazioni/negoziazioni per i titoli appartenenti a un particolare paese. Per esempio. Regno Unito/Francia ecc.

Attualmente - Abbiamo una collezione osservabile per ogni vista, e quando arriva un prezzo dal server, inviamo una copia a ciascuna raccolta Observable in base al filtro, cioè da una vista Master, e in base al paese a Ad esempio, vista paese.

Domanda: La raccolta osservabile filtrata supera questo modello anche se CollectionViewsource richiede un aggiornamento quando viene aggiunto/eliminato un prezzo. Aggiorna la sorgente CollectionView aggiunge penalità alle prestazioni.

Esempio di cui sopra è solo per riferimento, ci possono essere fino a 20 diverse visualizzazioni e fino a 20-50K, con prezzi unici 5-6K ciascuno con una profondità di prezzo molto grande intraday. L'applicazione ha una forte domanda in termini di prestazioni della GUI.

Ho in programma di sostituire il Datagrid corrente con un peso leggero Tableview, chiedendosi se una raccolta osservabile solo master aiuterà pure.

Molte grazie per i vostri input.

+0

Quante visualizzazioni ti aspetti che l'utente possa aprire in qualsiasi momento? Se hai una collezione master osservabile e aggiungi/rimuovi un oggetto dalla raccolta, allora ** tutti i ** riferimenti a quella raccolta aggiorneranno il loro elemento associato. Diciamo che hai aperto 20 visualizzazioni, ovvero 20 aggiornamenti dell'interfaccia utente con cui devi lavorare. –

+0

Supponiamo che - Tutte le 20 viste. Blotter è un controllo con ogni vista come Tab. Tutti i riferimenti alla vista aggiorneranno gli elementi associati va bene - Ma il CollectionView "filtrato" sottostante avrà i record filtrati, no? ad es. La Master Observable Collection ha 5 record (Regno Unito, Germania, Stati Uniti, Spagna, Italia) - La vista principale mostra tutti i 5, Regno Unito Visualizza 1 e così via. Nuovo elemento aggiunto (Regno Unito), Master ne avrà 6, e il Regno Unito ne avrà 2, altri ancora vuoti e così via. Attualmente raggiunto utilizzando ciascuna vista con il proprio livello ObS Col. Il livello di messaggistica viene indirizzato alla vista appropriata in base al Paese e al tipo di vista, ad esempio. –

+0

Hai provato a utilizzare un ICollectionView per visualizzare una rappresentazione filtrata della tua singola raccolta osservabile.Con la virtualizzazione abilitata sul controllo dell'interfaccia utente, le prestazioni dovrebbero essere buone anche con molti dati. – kenjara

risposta

0

Gli aggiornamenti su un CollectionViewSource possono essere molto negativi per le prestazioni poiché causeranno la rigenerazione degli oggetti e dei contenitori di articoli nella vista (vedere il collegamento nella frase successiva come riferimento). Questo è il motivo per cui ci sono Editable Collections in WPF. Ho implementato collezioni di grandi dimensioni modificabili per un prodotto una volta e non ho mai riscontrato problemi di prestazioni quando stavo usando IEditableCollectionView sebbene ciò non vuol dire che potrebbe non essere abbastanza veloce per la tua applicazione.

La mia ipotesi è che se si utilizza IEditableCollectionView non importa molto se si divide le raccolte o tenerli tutti insieme in una collezione gigante con diversi filtri applicati.