어떤 성능 도구를 사용해야 하나요? (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 작업과 파일 I/O 작업 소요 시간 및 처리하는 데이터를 보여 줍니다. UI 고정 조사
PerfTips 코드와 상호 작용하는 동안 성능 정보의 빠른 측정을 보여 줍니다. 디버깅하는 동안 이전 단계 작업(또는 중단점)과 현재 단계 또는 중단점 사이의 경과된 시간을 확인하려고 합니다.
이벤트 뷰어 HTTP 요청, 로그 메시지 및 예외를 표시합니다. • API 호출
의 대기 시간 조사• 원격 웹 서버에서 실행 중인 느린 애플리케이션 조사
.NET Async .NET 앱에서 비동기/대기 사용량을 표시합니다. 비동기 코드로 의심되는 성능 문제를 조사합니다.
.NET 카운터 .NET 카운터에 대한 시각화입니다. 초당 예외, 가비지 수집 및 CPU 사용률과 같은 .NET 카운터 기반 메트릭에 대한 시각화를 원합니다.
Database 데이터베이스 쿼리의 성능을 보여 줍니다. 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
PerfTips
이벤트 뷰어
.NET Async 아니요
.NET 카운터 예(.NET Core/5+에만 해당) 아니요 아니요 예(ASP.NET Core만 해당)
Database 예(.NET Core/5+에만 해당) 아니요 아니요 예(ASP.NET Core만 해당)
GPU 사용량 아니요
애플리케이션 타임라인 예(XAML) 아니요 아니요
성능 탐색기 아니요 아니요 아니요 아니요
IntelliTrace Visual Studio Enterprise만 포함된 .NET 아니요 Visual Studio Enterprise만 포함된 .NET Visual Studio Enterprise만 포함된 .NET

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

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

프로파일러 사용 알아보기

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