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
Al link seguente trovate un’interessante articolo sul mondo B.I. legato a SharePoint. In realtà sono molto interessanti anche gli articoli collegati :)
http://www.dotnetcurry.com/ShowArticle.aspx?ID=668
Saluti
Mario Saccoia
Che jQuery sia un o dei framework più usati da chi sviluppa applicazioni web è un dato di fatto.
Ma che ne dite se vi dicessi che ne esiste una versione mobile per scrivere applicazioni web cross-device?
Date uno sguardo al link: Building Mobile Apps with WebMatrix and jQuery Mobile
Personalmente non amo WebMatrix ma le potenzialità di jQuery Mobile sono sicuramente da tenere d'occhio
Saluti
Mario Saccoia