Condividi tramite


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.