none
[Prestazioni] ObservableCollection VS Dictionary(e simili) RRS feed

  • Domanda

  • Buona sera a tutti.
    vorrei discutere con voi, in termini di prestazioni, quanto(e se sopratutto) l'utilizzo di ObservableCollection può pesare in maniera negativa sulle prestazioni dell'applicazione, rispetto all'utilizzo di Dictionary(o simili che non implementano INotifyPropertyChanged). Naturalmente parto dai seguenti presupposti:
    - che i tipi da me citati siano utilizzati in un Binding
    - utilizzo massiccio di proprietà definite in questa maniera
    - che la maggior parte delle proprietà siano statiche( e che quindi non si rende necessario notificare alla View le modifiche)

    Immagino che per il terzo punto non ci siano problemi, in quanto non essendoci modifiche, non viene lanciato nessuna notifica ai vari osservatori.

    Di solito, cosa utilizzate? e in base a quali criteri?

    Per mia comodità ho creato una class(MyItem<T> ) che presenta tre proprietà, in modo tale da poterli utilizzare sempre come item di una lista:
    -Item: ogetto
    -Label:  il testo da mostrare all'utente
    -Key: chiave da utilizzare per effettuare le ricerca nel code-behind, senza dover per forza lavorare con l'item stesso
    Il vantaggio vien dal fatto che posso utilizzare pochi stili per lavora re con proprietà diverse, senza dover ogni volta specificare un DataTemplate)
    Es:

    per le proprietà ObservableCollection<MyItem<MyObject>>, ObservableCollection<MyItem<MyObject1>>,...,ObservableCollection<MyItem<MyObjectn>>
    posso applicare sempre lo stesso stile

    <ComboBox  SelectedValue="{Binding  SelectedValue,RelativeSource={RelativeSource Mode=TemplatedParent}}" ItemsSource="{Binding  ItemsSource,RelativeSource={RelativeSource Mode=TemplatedParent}}" SelectedValuePath="Item" DisplayMemberPath="Label"
    />





    -


    venerdì 15 marzo 2013 18:58

Tutte le risposte

  • Ciao,
    propongo di "consentirci di darci del tu" :-)

    Personalmente mi sono trovato ad approfondire, unicamente per quanto riguarda la ObservableCollection. Mi servono sia la CollectionChanged, che la PropertyChanged; soprattutto la prima.
    Interesserebbero anche a me altre opinioni.

    Perdona/te l'intrusione :)


    Fabrizio Alessandri


    venerdì 15 marzo 2013 21:57