ID별 성능 규칙
경고 |
설명 |
---|---|
System.String.Concat에 대한 호출이 프로파일링 데이터의 상당 비율을 차지합니다. 여러 세그먼트에서 문자열을 생성하려면 StringBuilder 클래스를 사용하는 것이 좋습니다. |
|
프로파일러에서 프로파일링 실행 중 VSPerfCorProf.dll을 찾지 못했습니다. 이 경고는 프로파일러 데이터 수집용 명령줄 도구를 사용할 때 VSPerfCLREnv.cmd 도구를 사용하여 필요한 환경 변수를 초기화하지 않은 경우에 발생합니다. |
|
응용 프로그램에 대해 수집된 호출 스택 샘플 중 상당 비율이 커널 모드에서 실행되었습니다. 다른 프로파일링 방법으로 응용 프로그램을 프로파일링하는 것이 좋습니다. |
|
계측 방법을 사용하여 수집된 프로파일링 데이터에서 프로세서(CPU) 사용률이 상당히 높게 나타났습니다. CPU 바인딩된 응용 프로그램을 프로파일링할 때는 샘플링 프로파일링 방법을 사용하는 것이 좋습니다. |
|
2세대 가비지 수집에서 회수되는 .NET 메모리 개체가 매우 많습니다. |
|
public 값 형식의 Equals 메서드 또는 같음 연산자에 대한 호출이 프로파일링 데이터의 상당 비율을 차지합니다. 보다 효율적인 메서드를 구현하는 것이 좋습니다. |
|
프로파일링 데이터에서 .NET Framework 예외 처리기가 호출된 비율이 높습니다. 다른 제어 흐름 논리를 사용하여 throw되는 예외 수를 줄이는 것이 좋습니다. |
|
프로파일링 실행 중 적은 수의 샘플만 수집되었습니다. 보다 의미 있는 결과를 얻으려면 실행 시간을 늘리거나 샘플링 주기를 더 빠르게 하는 것이 좋습니다. |
|
응용 프로그램 실행 시간 중 상당 비율이 JIT(Just-In-Time) 컴파일러에서 소요되었습니다. |
|
해당 형식의 GetHashCode 메서드에 대한 호출이 프로파일링 데이터의 상당 비율을 차지하거나 이 메서드가 메모리를 할당합니다. |
|
형식의 CompareTo 메서드가 부담이 크거나 메모리를 할당합니다. |
|
InvokeMember 및 GetMember 등의 System.Reflection 메서드에 대한 호출이나 MemberInvoke 등의 Type 메서드에 대한 호출이 프로파일링 데이터의 상당 비율을 차지합니다. 가능한 경우 이러한 메서드를 종속 어셈블리의 메서드에 대한 초기 바인딩으로 바꾸는 것이 좋습니다. |
|
System.String.Split 또는 System.String.Substring 메서드에 대한 호출이 프로파일링 데이터의 상당 비율을 차지합니다. 문자열에 부분 문자열이 있는지 테스트할 경우 System.String.IndexOf 또는 System.String.IndexOfAny를 사용하는 것이 좋습니다. |
|
프로파일링 실행 시 수집된 시스템 성능 데이터가 전체 프로파일링 실행 기간 중 디스크로 페이징되거나 디스크에서 페이징된 활성 메모리의 비율이 매우 높음을 나타냅니다. 페이징 비율이 이렇게 높으면 대개 응용 프로그램 성능과 응답성에 영향이 있습니다. 알고리즘을 수정하여 메모리 할당량을 줄여 보십시오. 응용 프로그램의 메모리 요구 사항을 고려해야 할 수도 있습니다. 또는 메모리가 더 많은 컴퓨터에서 프로파일링을 다시 실행해 보십시오. |
|
프로파일링 실행 시 수집된 시스템 성능 데이터가 전체 프로파일링 실행 기간 중 디스크로 페이징되거나 디스크에서 페이징된 활성 메모리의 비율이 매우 높음을 나타냅니다. 페이징 비율이 이렇게 높으면 대개 응용 프로그램 성능과 응답성에 영향이 있습니다. 알고리즘을 수정하여 메모리 할당량을 줄여 보십시오. 응용 프로그램의 메모리 요구 사항을 고려해야 할 수도 있습니다. 또는 메모리가 더 많은 컴퓨터에서 프로파일링을 다시 실행해 보십시오. |
|
프로파일링 실행 중 수집된 시스템 데이터가 .NET Framework 메모리 힙이 32비트 프로세스에서 관리되는 힙의 가능한 최대 크기에 근접했음을 나타냅니다. 보고되는 값은 프로파일링되는 프로세스가 활성 상태였던 동안 관찰된 최대값입니다. 응용 프로그램의 관리되는 리소스 사용을 최적화하는 것이 좋습니다. |
|
프로파일링 중 수집된 시스템 성능 데이터가 .NET Framework 개체에 대한 메모리의 상당 비율이 0세대가 아니라 1세대 가비지 수집에서 회수되었음을 나타냅니다. |
|
프로파일링 중 수집된 시스템 성능 데이터가 .NET Framework 개체에 대한 메모리의 상당 비율이 0세대 및 1세대가 아니라 2세대 가비지 수집에서 회수되었음을 나타냅니다. |
|
프로파일링 중 수집된 시스템 성능 데이터가 총 응용 프로그램 처리 시간에 비해 가비지 수집에 소요된 시간이 상당히 많음을 나타냅니다. |
|
프로파일링 중 수집된 시스템 성능 데이터가 총 응용 프로그램 처리 시간에 비해 가비지 수집에 소요된 시간이 지나치게 많음을 나타냅니다. |
|
커널 모드에서 실행된 CPU 시간의 비율이 사용자 모드에서 소요된 시간을 초과했습니다. 프로파일링을 다시 실행하고 시스템 호출(syscall) 수를 샘플링하여 커널 모드의 실행 시간이 높은 원인을 확인하는 것이 좋습니다. |
|
프로파일링 도구에서 지원되지 않는 .NET Framework 버전 1.1을 사용하는 응용 프로그램을 프로파일링하려고 했습니다. |
|
System.Data 메서드에 대한 호출이 프로파일링 데이터의 상당 비율을 차지하며, 프로파일링 실행 시 계층 상호 작용 데이터를 수집하지 않았습니다. 프로파일링을 다시 실행하고 계층 상호 작용 데이터를 추가하는 것이 좋습니다. |
|
프로파일링 데이터와 함께 수집된 시스템 성능 데이터가 응용 프로그램 실행 중 잠금 경합이 상당히 높은 비율로 발생했음을 나타냅니다. 동시성 프로파일링 방법으로 다시 프로파일링하여 경합 원인을 확인하는 것이 좋습니다. |
|
프로파일링 데이터와 함께 수집된 시스템 성능 데이터가 응용 프로그램 실행 중 잠금 경합이 매우 높은 비율로 발생했음을 나타냅니다. 동시성 프로파일링 방법으로 다시 프로파일링하여 경합 원인을 확인하는 것이 좋습니다. |
|
이 메시지는 프로세서가 응용 프로그램의 명령을 실행하는 데 소요된 시간의 백분율을 보고합니다. 보고되는 값은 프로파일링되는 프로세스가 활성 상태였던 전체 측정 간격의 평균입니다. 프로세서가 둘 이상인 컴퓨터에서는 이 값이 100%보다 클 수 있습니다. |
|
이 메시지는 프로세서가 응용 프로그램의 명령을 실행하는 데 소요된 시간의 최대 백분율을 보고합니다. 보고되는 값은 프로파일링되는 프로세스가 활성 상태였던 전체 측정 간격에서 보고된 최대값입니다. 프로세서가 둘 이상인 컴퓨터에서는 이 백분율이 100%보다 클 수 있습니다. |
|
이 메시지는 프로세스에서 현재 사용하고 있는 실제 메모리(작업 집합)의 평균 바이트 크기를 보고합니다. 프로세스 작업 집합은 현재 실제 메모리에 있는 프로세스 주소 공간의 페이지를 나타냅니다. |
|
이 메시지는 프로세스에서 현재 사용하고 있는 실제 메모리의 최대 바이트 크기를 보고합니다. 프로세스 작업 집합은 현재 실제 메모리에 있는 프로세스 주소 공간의 페이지를 나타냅니다. 이 규칙은 프로파일링이 활성 상태였던 기간 중 프로세스 작업 집합의 최대값을 보고합니다. |
|
이 메시지는 프로세스에서 현재 할당한 가상 메모리(전용 바이트)의 평균 바이트 크기를 보고합니다. 전용 바이트는 프로세스에 의해 할당되어 프로세스 내에서 실행 중인 스레드에 의해서만 액세스될 수 있는 가상 메모리 위치를 나타냅니다. |
|
이 메시지는 프로세스에서 현재 할당한 가상 메모리(전용 바이트)의 최대 바이트 크기를 보고합니다. 전용 바이트는 프로세스에 의해 할당되어 프로세스 내에서 실행 중인 스레드에 의해서만 액세스될 수 있는 가상 메모리 위치를 나타냅니다. |