Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive le informazioni dettagliate sulle prestazioni per ConcurrentDictionary<TKey,TValue>.Values.
Causa
System.Collections.Concurrent.ConcurrentDictionary.Values si verifica una ricerca lenta.
Descrizione delle informazioni dettagliate sulle prestazioni
ConcurrentDictionary.Values accetta un blocco e crea una copia di sola lettura dell'elenco di valori. L'enumerazione delle coppie chiave-valore può essere più efficiente in molte circostanze perché evita di bloccare l'intera raccolta per copiare tutti i valori.
Se è necessario usare molte ConcurrentDictionary.Values chiamate al metodo, ad esempio una per richiesta, non usare il costruttore predefinito e usare invece un costruttore che consente di specificare il valore di concorrenza. Il costruttore predefinito usa il livello di concorrenza uguale al numero di core nella casella. Usare invece un numero più piccolo come livello di concorrenza e quindi controllare l'utilizzo complessivo della memoria.
Se non è necessario prendere in considerazione la thread-safety, ConcurrentDictionary può essere più costoso di Dictionary. Verificare quindi se è necessario usare ConcurrentDictionary.
Come esaminare un avviso
Nello strumento Utilizzo CPU fare clic su Visualizza codice sorgente per passare alla visualizzazione di evidenziazione dell'albero delle chiamate e della riga di origine, che mostra dove viene impiegato il maggior numero di tempo in ConcurrentDictionary.Values. Da questo punto, tornare alla posizione in cui viene usato il metodo e controllare se è possibile enumerare invece le coppie chiave-valore.