DA0010: GetHashCode의 부담이 큽니다.DA0010: Expensive GetHashCode

규칙 IDRule Id DA0010DA0010
범주Category .NET Framework 사용.NET Framework Usage
프로파일링 방법Profiling methods 샘플링Sampling

.NET 메모리.NET Memory
메시지Message GetHashCode 함수는 정리되어야 하며 메모리를 할당하면 안 됩니다.GetHashCode functions should be cheap and not allocate any memory. 가능한 경우 해시 코드 함수의 복잡성을 줄입니다.Reduce complexity of hash code function if possible.
메시지 유형Message type 경고Warning

원인Cause

해당 형식의 GetHashCode 메서드 호출이 프로파일링 데이터의 상당한 부분을 차지하거나 메서드가 메모리를 할당합니다.Calls to the GetHashCode method of the type are a significant proportion of the profiling data or the method allocates memory.

규칙 설명Rule Description

해싱은 큰 컬렉션에서 특정 항목을 신속하게 찾기 위한 기술입니다.Hashing is a technique for rapidly locating a particular item in a large collection. 해시 테이블은 매우 클 수 있으며 속도가 빠른 액세스를 지원해야 하므로 해시 테이블 매우 효율적이어야 합니다.Because hash tables can be very large and have to support very high rates of access, hash tables should be extremely efficient. 이 요구 사항의 시사점은 .NET Framework의 GetHashCode 메서드는 메모리를 할당하지 않아야 한다는 것입니다.An implication of this requirement is that GetHashCode methods in the .NET Framework should not allocate memory. 메모리 할당은 가비지 수집기의 부하를 증가시키고 할당 요청으로 인해 가비지 수집을 실행하는 것이 필요할 경우 잠재적 지연에 메서드를 노출합니다.Allocating memory increases the load on the garbage collector and exposes the method to potential delays if it become necessary to run garbage collection as a result of the allocation request.

위반 문제를 해결하는 방법How to Fix Violations

메서드의 복잡성을 줄이세요.Reduce the complexity of the method.