Condividi tramite


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.