Mario Saccoia Blog

Le mie esperienze con le tecnologie Microsoft

Migliorare una ObservableCollection trasformandola in una OptimizedObservableCollection

Per chi scrive applicazioni Silverlight o WPF e magari utilizza il pattern MVVM, la ObservableCollection è una delle classi che sicuramente ha dovuto utilizzare.

Ma c’è la possibilità di migliorarla? Magari aumentandone le performance?

 

Naturalmente si.

 

Uno dei colli di bottiglia che è possibili individuare nella nostra ObservableCollection è dovuto ai metodi per l’aggiunta e la rimozione degli elementi dalla Collection.

Mi riferisco ai metodi Add() e Remove() in particolare.

Il loro problema sta nel fatto che eseguono azioni atomiche: ovvero l’aggiunta e la rimozione degli elementi nella/dalla ObservableCollection  avviene uno alla volta.

Quindi volendo aggiungere 1.000.000 di elementi alla ObservableCollection si deve per forza “mettere su” un bel ciclo per ogni elemento.

 

Nell’articolo che ho linkato qui in fondo alla pagina (come fonte) è possibile osservare una possibile implementazione del metodo AddRange() per l’inserimento “massivo” di elementi nella ObservableCollection.

 

Il risultato è strabiliante!!!

Con una ObservableCollection “classica”, 1.000.000 di elementi è aggiunto in 00:00:06.58 secondi.

Con una ObservableCollection “ottimizzata”, 1.000.000 di elementi è aggiunto in 00:00:00.28 centesimi di secondo.

 

Per un esempio di implementazione vi lascio il link al post originale da cui ho ricavato le informazioni per scrivere questo.

Fonte: Faster Databinding in WPF and Silverlight using OptimizedObservableCollection (il link si apre in una nuova finestra/scheda).

 

 

Saluti

Mario Saccoia

 


Share this post :


Digg This
Posted: 14 Mar 2011 10:49 da Mario Saccoia | con no comments
Inserito sotto: , ,