.NET Framework 사용 성능 규칙
.NET Framework 사용 범주의 성능 규칙은 최적화할 수 있는 특정 메서드를 식별하고 성능 문제를 해결하기 위해 조사할 수 있는 가비지 수집 및 잠금 경합과 같은 보다 일반적인 사용 패턴도 식별합니다.
String.Concat(String, String)에 대한 호출이 프로파일링 데이터의 상당 비율을 차지합니다. 여러 세그먼트에서 문자열을 생성하려면 StringBuilder 클래스를 사용하는 것이 좋습니다. |
|
2세대 가비지 수집에서 회수되는 .NET 메모리 개체가 상대적으로 매우 많습니다. 짧은 수명의 개체가 1세대 수집 후에도 너무 많이 남아 있으면 상당한 메모리 관리 비용이 쉽게 증가할 수 있습니다. |
|
public 값 형식의 Equals 메서드 또는 같음 연산자에 대한 호출이 프로파일링 데이터의 상당 비율을 차지합니다. 보다 효율적인 메서드를 구현하는 것이 좋습니다. |
|
프로파일링 데이터에서 .NET Framework 예외 처리기가 호출된 비율이 높습니다. 다른 제어 흐름 논리를 사용하여 throw되는 예외 수를 줄이는 것이 좋습니다. |
|
해당 형식의 GetHashCode 메서드에 대한 호출이 프로파일링 데이터의 상당 비율을 차지하거나 GetHashCode 메서드가 메모리를 할당합니다. 메서드의 복잡성을 줄입니다. |
|
해당 형식의 CompareTo 메서드가 부담이 크거나 메모리를 할당합니다. CompareTo 메서드의 복잡성을 줄입니다. |
|
InvokeMember 및 GetMember와 같은 System.Reflection 메서드 또는 InvokeMember와 같은 Type 메서드에 대한 호출이 프로파일링 데이터의 상당 비율을 차지합니다. 가능한 경우 이러한 메서드를 종속 어셈블리의 메서드에 대한 초기 바인딩으로 바꾸는 것이 좋습니다. |
|
String.Split 또는 Substring 메서드에 대한 호출이 프로파일링 데이터의 상당 비율을 차지합니다. 문자열에 부분 문자열이 있는지 테스트할 경우 IndexOf 또는 IndexOfAny를 사용하는 것이 좋습니다. |
|
프로파일링 실행 중 수집된 시스템 데이터가 .NET Framework 메모리 힙이 32비트 프로세스에서 관리되는 힙의 도달 가능한 최대 크기에 근접했음을 나타냅니다. .NET 메모리 프로파일링 방법을 사용하여 다시 프로파일링하고 응용 프로그램의 관리되는 리소스 사용을 최적화하는 것이 좋습니다. |
|
1세대 가비지 수집에서 회수되는 .NET 메모리 개체가 상대적으로 매우 많습니다. 짧은 수명의 개체가 0세대 수집 후에도 너무 많이 남아 있으면 상당한 메모리 관리 비용이 쉽게 증가할 수 있습니다. |
|
2세대 가비지 수집에서 회수되는 .NET 메모리 개체가 매우 많습니다. 짧은 수명의 개체가 1세대 수집 후에도 너무 많이 남아 있으면 상당한 메모리 관리 비용이 쉽게 증가할 수 있습니다. 이 규칙은 잠금 경합 비율이 규칙 DA0005의 상한 임계값을 초과할 때 발생합니다. |
|
프로파일링 중 수집된 시스템 성능 데이터가 총 응용 프로그램 처리 시간에 비해 가비지 수집에 소요된 시간이 상당히 많음을 나타냅니다. |
|
프로파일링 중 수집된 시스템 성능 데이터가 총 응용 프로그램 처리 시간에 비해 가비지 수집에 소요된 시간이 지나치게 많음을 나타냅니다. 이 규칙은 가비지 수집에 소요된 시간이 규칙 DA0023의 상한 임계값을 초과할 때 발생합니다. |
|
프로파일링 데이터와 함께 수집된 시스템 성능 데이터가 응용 프로그램 실행 중 잠금 경합이 상당히 높은 비율로 발생했음을 나타냅니다. 동시성 프로파일링 방법으로 다시 프로파일링하여 경합 원인을 확인하는 것이 좋습니다. |
|
프로파일링 데이터와 함께 수집된 시스템 성능 데이터가 응용 프로그램 실행 중 잠금 경합이 매우 높은 비율로 발생했음을 나타냅니다. 동시성 프로파일링 방법으로 다시 프로파일링하여 경합 원인을 확인하는 것이 좋습니다. 이 규칙은 잠금 경합 비율이 규칙 DA0038의 상한 임계값을 초과할 때 발생합니다. |