.NET Framework 사용 성능 규칙

.NET Framework 사용 범주의 성능 규칙은 최적화할 수 있는 특정 방법을 확인하고 성능 문제가 있는지 조사할 수 있는 가비지 수집 및 잠금 경합과 같은 더 일반적인 사용 패턴도 확인합니다.

DA0001: 연결에 StringBuilder를 사용하십시오. String.Concat(String, String) 호출이 프로파일링 데이터의 상당한 부분을 차지합니다. 여러 세그먼트에서 문자열을 구성할 때 StringBuilder 클래스를 사용해 보세요.
DA0005: GC2 컬렉션이 많습니다. 비교적 많은 .NET 메모리 개체가 2세대 가비지 수집에서 회수됩니다. 너무 많은 단기 유지 개체가 1세대 수집에서 생존하면 메모리 관리 비용이 쉽게 과도해질 수 있습니다.
DA0006: 값 형식에 대해 Equals()를 재정의하십시오. Equals 메서드 또는 공개 값 형식의 같음 연산자에 대한 호출이 프로파일링 데이터의 상당한 부분을 차지합니다. 더 효율적인 메서드를 구현해 보세요.
DA0007: 제어 흐름에는 예외를 사용하지 마십시오. 프로파일링 데이터에서 .NET Framework 예외 처리기가 호출되는 비율이 높았습니다. throw되는 예외 수를 줄일 때 다른 제어 흐름 논리를 사용해 보세요.
DA0010: GetHashCode의 부담이 큽니다. 해당 형식의 GetHashCode 메서드 호출이 프로파일링 데이터의 상당한 부분을 차지하거나 GetHashCode 메서드가 메모리를 할당합니다. 메서드의 복잡성을 줄이세요.
DA0011: CompareTo의 부담이 큽니다. 해당 형식의 CompareTo 메서드가 부담이 크거나 메서드가 메모리를 할당합니다. CompareTo 메서드의 복잡성을 줄이세요.
DA0012: 리플렉션 양이 많습니다. InvokeMemberGetMember 같은 System.Reflection 메서드 호출이나 InvokeMember 같은 Type 메서드 호출이 프로파일링 데이터의 상당한 부분을 차지합니다. 가능할 경우 이러한 메서드를 종속 어셈블리의 메서드에 대한 초기 바인딩으로 바꿔 보세요.
DA0013: String.Split 또는 String.Substring 사용률이 높습니다. String.Split 또는 Substring 메서드 호출이 프로파일링 데이터의 상당한 부분을 차지합니다. 문자열에 부분 문자열이 있는지 테스트할 경우 IndexOf 또는 IndexOfAny를 사용해 보세요.
DA0018: 프로세스 관리 메모리 한도로 실행 중인 32비트 응용 프로그램 프로파일링 실행 중에 수집된 시스템 데이터는 .NET Framework 메모리 힙이, 관리되는 힙이 32비트 프로세스에 도달할 수 있는 최대 크기에 도달했음을 나타냅니다. .NET 메모리 프로파일링 방법을 사용하고 응용 프로그램의 관리되는 리소스 사용을 최적화하여 다시 프로파일링해 보세요.
DA0021: Gen 1 가비지 컬렉션의 비율이 높습니다. 비교적 많은 .NET 메모리 개체가 1세대 가비지 수집에서 회수됩니다. 너무 많은 단기 유지 개체가 0세대 수집에서 생존하면 메모리 관리 비용이 쉽게 과도해질 수 있습니다.
DA0022: Gen 2 가비지 수집의 비율이 높습니다. 많은 .NET 메모리 개체가 2세대 가비지 수집에서 회수됩니다. 너무 많은 단기 유지 개체가 1세대 수집에서 생존하면 메모리 관리 비용이 쉽게 과도해질 수 있습니다. 잠금 경합 비율이 규칙 DA0005의 임계값 상한을 초과할 경우 이 규칙이 실행됩니다.
DA0023: 높은 GC CPU 시간 프로파일링 중에 수집되는 시스템 성능 데이터가 가비지 수집에 걸린 시간이 총 응용 프로그램 처리 시간에 비해 크다는 것을 나타냅니다.
DA0024: 과도한 GC CPU 시간 프로파일링 중에 수집되는 시스템 성능 데이터가 가비지 수집에 걸린 시간이 총 응용 프로그램 처리 시간에 비해 지나치게 크다는 것을 나타냅니다. 가비지 수집에 걸린 시간이 규칙 DA0023의 임계값 상한을 초과할 경우 이 규칙이 실행됩니다.
DA0038: 높은 비율의 잠금 경합 프로파일링 데이터와 함께 수집되는 시스템 성능 데이터가 응용 프로그램 실행 중에 발생한 잠금 경합의 비율이 상당히 높다는 것을 나타냅니다. 동시성 프로파일링 방법을 통해 다시 프로파일링하여 경합의 원인을 찾아 보세요.
DA0039: 매우 높은 비율의 잠금 경합 프로파일링 데이터와 함께 수집되는 시스템 성능 데이터가 응용 프로그램 실행 중에 발생한 잠금 경합의 비율이 지나치게 높다는 것을 나타냅니다. 동시성 프로파일링 방법을 통해 다시 프로파일링하여 경합의 원인을 찾아 보세요. 잠금 경합 비율이 규칙 DA0038의 임계값 상한을 초과할 경우 이 규칙이 실행됩니다.