DA0010: Funzione GetHashCode dispendiosa
ID regola |
DA0010 |
Category |
Utilizzo di .NET Framework |
Metodi di profilatura |
Campionamento Memoria .NET |
Messaggio |
Le funzioni GetHashCode dovrebbero essere semplici e non allocare memoria.Se possibile, ridurre la complessità della funzione di codice hash. |
Tipo messaggio |
Avviso |
Causa
Le chiamate al metodo GetHashCode del tipo costituiscono una percentuale significativa dei dati di profilatura oppure il metodo alloca memoria.
Descrizione della regola
L'hashing è una tecnica per individuare rapidamente un determinato elemento in una grande raccolta.Poiché le tabelle hash possono essere molto grandi e devono poter supportare frequenze di accesso molto elevate, le tabelle hash devono essere estremamente efficienti.Un'implicazione di questo requisito è che i metodi GetHashCode in .NET Framework non devono allocare memoria.L'allocazione di memoria aumenta il carico sul Garbage Collector e, se diventa necessario eseguire la procedura di Garbage Collection a seguito della richiesta di allocazione, espone il metodo a possibili ritardi.
Come correggere le violazioni
Ridurre la complessità del metodo.