다음을 통해 공유


Visual Studio(C#, C++, Visual Basic, F#)에서 .NET 애플리케이션을 계측하세요.

Visual Studio 2022 버전 17.5 릴리스에서는 새 동적 계측 도구를 사용할 수 있습니다. 이 도구는 함수가 호출되고 이전 버전의 계측 도구보다 빠른 정확한 횟수를 보여 줍니다. 이 도구는 PDB 없이 .NET Core 계측을 지원합니다. Visual Studio 2022 버전 17.6 미리 보기 2부터 이 도구는 C/C++도 지원합니다.

이 도구는 CPU 사용량 대신 벽시계 시간을 기반으로 하는 경우를 제외하고 CPU 사용량 도구와 유사합니다. 즉, 잠금을 기다리는 데 걸린 시간과 같은 차단된 시간이 CPU 사용량 도구와 달리 계측 추적에 표시됩니다. 계측 도구를 효과적으로 사용하는 학습에 대한 자세한 내용은 계측 개요사례 연구: 성능 문제 격리를 참조하세요.

애플리케이션 계측

  1. Alt+F2(또는 디버그 > 성능 프로파일러)를 선택하고 Visual Studio에서 성능 프로파일러를 엽니다.

  2. 인스트루먼트 체크박스를 선택합니다.

    선택한 계측 도구를 보여주는 스크린샷.

    프로파일러를 시작하기 전에 컬렉션 일시 중지로 시작 옵션을 사용하도록 설정하면 진단 세션 보기에서 레코드 단추를 선택할 때까지 데이터가 수집되지 않습니다.

    참고 항목

    도구를 선택할 수 없는 경우 다른 모든 도구의 확인란을 선택 취소합니다. 일부 도구는 단독으로 실행해야 하기 때문입니다. 도구를 함께 실행하는 방법에 대한 자세한 내용은 동시에 여러 프로파일러 도구 사용을 참조 하세요.

    그래도 도구를 사용할 수 없는 경우 프로젝트가 위의 요구 사항을 충족하는지 확인합니다. 가장 정확한 데이터를 캡처하기 위해 프로젝트가 릴리스 모드에 있는지 확인합니다.

  3. 시작 단추를 선택하여 도구를 실행합니다.

  4. 계측할 프로그램의 항목을 선택합니다.

    계측할 항목 선택 대화 상자를 보여 주는 스크린샷.

    프로파일러는 다음 프로파일링 실행에 대해 선택한 항목을 Visual Studio 2022 버전 17.11 미리 보기 1부터 유지합니다.

  5. 확인을 선택합니다.

  6. 도구가 시작되면 앱에서 프로파일링하려는 시나리오를 진행합니다. 그런 다음 수집 중지를 선택하거나 앱을 닫아 데이터를 확인합니다.

계측 보고서 분석

프로파일링 데이터가 Visual Studio에 표시됩니다.

.NET 계측 데이터를 보여 주는 스크린샷.

계측 데이터 보기에는 가장 오래 실행된 순서대로 함수 목록이 표시되며, 가장 오래 실행된 함수가 상위 함수아래 맨 위에 있습니다. 핫 경로 섹션에는 가장 많은 시간을 사용하는 함수에 대한 호출 스택이 표시됩니다. 이 목록에서 성능 병목 현상이 발생 중인 함수를 알 수 있습니다.

관심 있는 기능을 클릭하면 더 자세한 보기가 표시됩니다.

사용 가능한 데이터는 CPU 사용량 도구와 유사합니다. 단, CPU 사용량 대신 벽시계 시간 및 호출 횟수를 기반으로 합니다.

인사이트 분석

If any insights show up in the Top Insights 섹션에 인사이트가 표시되면 제공된 링크를 사용하여 식별 문제에 대한 자세한 정보를 가져옵니다. 자세한 정보는 CPU 인사이트를 참조하되, 계측 도구에 대한 정보는 CPU 사용률이 아닌 벽시계 시간에만 적용됨을 유념합니다.

또한 Copilot을 사용하는 경우 Copilot 요청 버튼으로 Copilot 채팅 창을 열면 Copilot이 코드 검사 및 식별된 문제에 따라 제안을 제공합니다.

계측 세부 보고서 분석

계측 보고서를 분석하려면 세부 정보 열기를 클릭하거나 상위 함수 중 하나를 클릭하여 함수 뷰를 엽니다.

이 보고서는 진단 데이터에 대한 다양한 보기를 제공합니다.

  • 호출자/호출 수신자
  • 호출 트리
  • 모듈
  • Functions
  • 플레임 그래프

호출자/호출 수신자를 제외한 모든 뷰에서 진단 보고서는 총 [단위, %]를 기준으로 내림차순으로 정렬됩니다. 열 머리글을 선택하여 정렬 순서 또는 정렬 열을 변경합니다. 관심이 있는 함수를 두 번 클릭하면 함수의 원본 및 해당 함수에서 소요된 시간을 보여 주는 강조 표시가 표시됩니다. 이 표에는 호출된 함수(합계)를 포함하여 함수에서 소요된 시간과 같은 데이터가 포함된 열과 호출된 함수(자체)를 제외한 함수에서 소요된 시간을 보여 주는 두 번째 열이 표시됩니다.

이 데이터를 사용하여 함수 자체에 성능 병목 현상이 있는지 여부를 평가할 수 있습니다. 메서드가 표시하는 데이터의 양을 결정하여 타사 코드 또는 런타임 라이브러리가 엔드포인트가 느리거나 리소스 사용량이 많은 이유인지 확인합니다.

플레임 그래프 사용에 대한 자세한 내용은 플레임 그래프를 사용하여 실행 부하 과다 경로 식별을 참조하세요.

계측 호출 뷰

호출 트리를 보려면 보고서에서 부모 노드를 선택합니다. 기본적으로 계측 페이지는 호출자/호출 수신자 뷰에 열립니다. 현재 보기 드롭다운 목록에서 호출 트리를 선택합니다. 호출 트리 보기를 사용하면 성능 병목 상태를 빠르게 식별할 수 있습니다.

실행 부하 과다 경로 확장실행 부하 과다 경로 표시 단추를 클릭하여 벽시계 시간 사용률이 가장 높은 함수 호출을 볼 수 있습니다.

호출 트리 구조를 보여 주는 스크린샷.

열 값에 대한 자세한 내용은 다음과 같습니다.

  • 합계는 해당 함수와 이 함수에 의해 호출된 함수에서 소요된 시간을 나타냅니다. 높은 합계 값은 가장 많은 클록 시간을 소비하는 함수를 가리킵니다.

  • 자체는 함수 본문에서 호출된 모든 함수에서 소요된 시간을 제외하고 함수 본문에서 소요된 시간을 나타냅니다. 자체 CPU 값이 크면 함수 자체 내에서 성능 병목 현상이 있는 것일 수 있습니다.

  • 호출 개수는 함수가 호출되는 횟수를 나타냅니다.

  • 모듈 함수를 포함하는 모듈의 이름입니다.