다음을 통해 공유


어떤 성능 도구를 사용해야 하나요? (C#, Visual Basic, C++, F#)

Visual Studio는 앱 유형에 따라 다양한 종류의 앱 성능 문제를 진단하는 데 도움이 되는 다양한 프로파일링 도구를 제공합니다. 이 문서에서는 시나리오 및 애플리케이션 유형에 적합한 도구를 찾는 데 도움이 되는 정보를 제공합니다.

프로파일링 도구를 사용하여 코드를 최적화하는 일반적인 방법은 사례 연구: 코드최적화에 대한 초보자 가이드를 참조하세요.

어떤 도구를 사용해야 하나요?

다음 표에서는 Visual Studio에서 제공하는 다양한 도구를 나열하고 도구를 선택하는 일반적인 시나리오를 제공합니다.

성능 도구 묘사 도구를 언제 사용해야 합니까?
CPU 사용량 CPU에서 시간을 소비하는 위치를 표시합니다. • 일반적인 성능 문제에 대한 조사를 시작합니다.
• 높은 서버 CPU 사용량을 조사합니다.
• 주문이 소매 웹 사이트를 통과하지 못하는 경우와 같은 DevOps 시나리오를 조사합니다.
• CPU 사용량을 최적화합니다.
• API 호출의 대기 시간을 조사합니다.
불꽃 그래프 호출 트리의 대체 시각화를 제공하는 CPU 사용량 도구 내의 보기입니다. API 호출의 대기 시간 조사
핫 경로 CPU 사용량 도구 내에서 애플리케이션에서 대부분의 CPU 시간이 소요된 위치를 보여 줍니다. API 호출의 대기 시간 조사
메모리 사용량 메모리 누수와 같은 문제를 찾으려면 앱의 메모리를 표시합니다. • 메모리 사용 최적화
• UI 멈춤 조사
• 의심되는 메모리 누수 조사(네이티브 코드)
.NET 개체 할당 .NET 개체가 할당되는 위치와 가비지 수집에 대한 정보를 표시합니다. • .NET 메모리 사용 최적화
• 가비지 컬렉션 분석
계측 정확한 호출 수 및 통화 시간을 표시합니다. • CPU 사용량과 같은 도구가 필요하지만 벽시계 시간에 따라 함수에 소요된 정확한 호출 수와 시간을 원합니다.
• 잠금을 기다리는 데 걸린 시간과 같이 차단된 시간을 확인하려고 합니다.
• 참고: 이 도구에는 추가 오버헤드가 필요합니다.
파일 I/O 파일 I/O 작업과 그 소요 시간 및 처리하는 데이터 양을 보여 줍니다. UI 정지 조사
성능 설명 코드와 상호 작용하는 동안 성능 정보의 빠른 측정을 보여 줍니다. 디버깅하는 동안 이전 단계 작업(또는 중단점)과 현재 단계 또는 중단점 사이의 경과된 시간을 확인하려고 합니다.
이벤트 뷰어 HTTP 요청, 로그 메시지 및 예외를 표시합니다.
API 호출의 대기 시간 조사 • 원격 웹 서버에서 실행 중인 느린 애플리케이션 조사
.NET 비동기 .NET 앱에서 비동기/대기 사용량을 표시합니다. 비동기 코드로 의심되는 성능 문제를 조사합니다.
.NET 카운터 .NET 카운터에 대한 라이브 보고서입니다. • 일반적인 성능 문제에 대한 조사를 시작합니다.
• 초당 예외, 가비지 수집 및 CPU 사용률과 같은 .NET 카운터 기반 메트릭에 대한 추적을 원합니다.
데이터베이스 데이터베이스 쿼리의 성능을 보여 줍니다. ADO.NET 또는 Entity Framework Core를 사용하는 데이터베이스 쿼리의 성능을 조사합니다.
GPU 사용량 Direct3D 앱의 높은 수준의 하드웨어 사용량을 보여 줍니다. 앱의 성능이 CPU 바인딩인지 GPU 바인딩인지 확인합니다.
애플리케이션 타임라인 XAML 앱의 UI 성능을 보여 줍니다. 프레임 렌더링에 소요된 시간과 같은 XAML 앱의 UI 성능을 조사합니다.
IntelliTrace 이벤트를 기록하고 다양한 실행 지점에서 애플리케이션 상태를 검사할 수 있는 디버거 도구입니다. 도구가 현재 애플리케이션 상태뿐만 아니라 다양한 지점에서 애플리케이션 상태를 검사하려고 합니다.

내 프로젝트에 지원되는 도구는 무엇인가요?

다음 표에는 Visual Studio에서 제공하는 다양한 도구와 사용할 수 있는 다양한 프로젝트 유형이 나와 있습니다.

성능 도구 .NET C/C++ UWP ASP.NET/ASP.NET Core
CPU 사용량
메모리 사용량
.NET 개체 할당 아니요
계측
파일 입출력 (I/O)
성능 설명
이벤트 뷰어
.NET 비동기 아니요
.NET 카운터 예(.NET Core/5 이상만 해당) 아니요 아니요 예(ASP.NET Core에만 해당)
데이터베이스 예(.NET Core/5 이상만 해당) 아니요 아니요 예(ASP.NET Core에만 해당)
GPU 사용량 아니요
애플리케이션 타임라인 예(XAML) 아니요 아니요
성능 탐색기 아니요 아니요 아니요 아니요
IntelliTrace Visual Studio Enterprise와 함께 사용하는 .NET 아니요 .NET은 Visual Studio Enterprise에서만 사용 가능 Visual Studio Enterprise에서만 사용할 수 있는 .NET

Linux에서 지원되는 도구는 무엇입니까?

다음 도구는 Windows뿐만 아니라 대상 플랫폼으로 Linux에서 지원됩니다.

  • CPU 사용량
  • .NET 개체 할당 추적
  • .NET 비동기
  • .NET 성능 카운터
  • 이벤트 뷰어
  • 데이터베이스

프로파일러 사용 알아보기

다음 문서 및 블로그 게시물은 Visual Studio 성능 도구를 효과적으로 사용하는 방법을 배우는 데 도움이 되는 자세한 정보를 제공합니다.