Sto creando una libreria di cui sono un test delle prestazioni. In esso generico una volta Dictionary<Type, X>
. Gli articoli sono attualmente inseriti in un ordine casuale. Il dizionario rimane invariato durante la vita dell'applicazione.Alternativa più rapida del dizionario <Type, X>?
Viene quindi utilizzato frequentemente per cercare gli articoli. La ricerca è uno dei colli di bottiglia più grandi nella libreria.
Sì, sono microtimizzante, ma per imparare. Mi chiedo se ci sia un modo migliore per ottenere prestazioni di ricerca?
Aggiornamento
ho usato dotTrace per misurare le prestazioni. Il report + dotTrace si trova nel mio computer di casa, quindi non ho il rapporto qui (potrebbe averlo caricato da qualche altra parte).
ho usato le prove trovate qui: https://github.com/danielpalme/IocPerformance
La definizione del dizionario si trova qui: https://github.com/jgauffin/Griffin.Container/blob/master/Source/Griffin.Container/ContainerBase.cs
(ho creato il contenitore venerdì scorso, non aspettatevi troppo)
Update2
Dictionary.TryGetValue
prende 101ms totali di Resolve
(totale 251ms) che è il 40,2% se ho interpretato correttamente i numeri.
a: Quanti tipi/coppie nei dati, b: cosa ti fa pensare che sia un collo di bottiglia? (come avete misurato? possiamo vedere uno qualsiasi del codice di ricerca?) –
ec: i chiamanti utilizzano tipi statici (ad esempio 'int' ecc.) o stanno utilizzando oggetti di tipo" Tipo "a causa del riflesso? se i chiamanti conoscono i tipi staticamente, ci sono alcuni trucchi che potrebbero essere utilizzati –
@MarcGravell: potresti estendere un po 'su questi trucchi (risposta o collegamento) in quanto è un argomento interessante. grazie – mathieu