DA0010: Funzione GetHashCode dispendiosa
ID regola |
DA0010 |
Category |
Utilizzo di .NET Framework |
Metodi di profilatura |
Campionamento Memoria .NET |
Messaggio |
Le funzioni devono richiedere poche risorse e non allocare memoria. Ridurre la complessità della funzione del codice hash, se possibile. |
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 un grande insieme. Poiché possono essere molto grandi e possono dover 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.