어떤 성능 도구를 사용해야 하나요? (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 성능 도구를 효과적으로 사용하는 방법을 배우는 데 도움이 되는 자세한 정보를 제공합니다.
- 사례 연구: 코드 최적화에 대한 초보자 가이드
- 사례 연구: 성능 문제 격리하기
- 새 계측 도구 사용하여 Visual Studio 성능 향상
- 사례 연구: 30분 미만의 두 배 성능