C++ 프로파일링 도구

Sheeraz Gul 2024년2월16일
C++ 프로파일링 도구

이 튜토리얼은 C++에 가장 적합한 프로파일러 중 일부를 보여줍니다.

C++ 프로파일링 도구

프로파일링을 통해 프로그램이 어느 부분에서 시간을 보내고 있는지 알 수 있습니다. 다음과 같은 단계별 프로세스입니다.

  1. 먼저 프로그램을 컴파일하고 프로파일링과 연결합니다.
  2. 그런 다음 프로그램을 실행하여 데이터 파일을 생성합니다.
  3. 그런 다음 프로파일링 도구를 실행하여 프로파일 데이터를 분석합니다.

C++에 사용할 수 있는 많은 프로파일링 도구가 있습니다. 이 튜토리얼은 C++을 위한 최고의 프로파일링 도구 중 일부를 보여줍니다.

GNU 프로파일러

GNU 프로파일러는 C++ 프로파일링을 위한 유비쿼터스 무료 소프트웨어입니다. IDE의 도움으로 GUI에서 결과를 생성할 수 있는 gprof로 축약됩니다.

gprof에도 동일한 세 단계가 있습니다.

  1. 프로파일링으로 프로그램을 컴파일하고 연결합니다.
  2. 프로그램을 실행합니다.
  3. gprof를 실행하여 프로필 데이터를 분석합니다.

gprof에는 다음 옵션을 포함하는 명령 요약이 있습니다.

  1. 출력 옵션
  2. 분석 옵션
  3. 기타 옵션
  4. 더 이상 사용되지 않는 옵션
  5. 심스펙

gprof는 Windows, macOS 및 Linux 기반 C++ 시스템에서 지원됩니다.

여기서 gprof는 플랫 프로파일, 호출 그래프 및 gprof를 C++용 최고의 프로파일링 도구 중 하나로 만드는 라인별 프로파일링을 포함하여 출력을 해석하는 다양한 방법을 제공하지만 몇 가지 기능이 있습니다. 때때로 출력의 부정확성을 포함하고 때로는 Unix와 호환되지 않는 back draws. 전체 문서를 보려면 이 링크를 방문하십시오.

인텔 VTune 프로파일러

인텔 VTune 프로파일러는 다양한 언어를 위한 무료 프로파일 도구이기도 합니다. 언어에는 C, C++, C#, Python, OpenCL™ 코드, Fortran, GoLang, Java, Assembly, .Net 등이 포함됩니다.

인텔 Vtune 프로파일러는 시스템 및 응용 프로그램 성능을 최적화하는 데 사용됩니다. 또한 스토리지, IoT, 클라우드, 미디어 등의 시스템 구성을 최적화합니다.

이 도구의 다른 주요 기능은 다음과 같습니다.

  1. 시스템 및 애플리케이션의 성능을 최적화하고 열 및 전력 관련 스로틀링을 방지합니다.
  2. 인텔 Vtune 프로파일러는 확장된 기간 동안 대략적인 형태로 시스템 데이터를 가져올 수 있습니다. 또한 소스 코드에 매핑된 자세한 결과를 얻을 수 있습니다.
  3. 인텔 Vtune 프로파일러는 가속 위치를 포함하여 응용 프로그램의 성능을 조정할 수 있습니다.

인텔 Vtune 프로파일러는 Windows, macOS 및 Linux 기반 C++ 시스템에서 지원됩니다.

인텔 VTune 프로파일러는 이 링크에서 다운로드할 수 있습니다.

Google Perftools

perftools는 코드 계측이 필요하지 않은 C++에 사용할 수 있는 Google의 프로파일러입니다. gperftools는 다중 스레드 고성능 malloc() 구현 모음입니다.

이 도구는 힙 및 CPU 프로파일러를 포함하여 BSD 라이선스에 따라 배포됩니다. 이 도구는 모든 UNIX 기반 시스템에서 사용할 수 있습니다.

이 도구의 주요 기능은 다음과 같습니다.

  1. 매우 멋진 그래픽 출력이 있습니다.
  2. 메모리 프로파일링, 누수 검사 및 CPU 프로파일링을 수행할 수 있습니다.
  3. 가장 빠른 프로파일링 도구 중 하나로 간주됩니다.
  4. 코드 계측이 필요하지 않습니다.

이 도구는 빠르지만 다른 도구는 더 세분화되어 있습니다. 이 도구는 Unix 기반 시스템에서만 지원됩니다. perftools는 이 링크에서 다운로드할 수 있습니다.

발그라인드

Valgrind는 C++에 사용할 수 있는 프로파일링 도구인 CachegrindCallgrind를 포함하는 도구 모음입니다. callgrindcachegrind의 확장입니다.

cachegrind는 캐시 프로파일링에 사용됩니다. 이 도구는 CPU 캐시에서 시뮬레이션을 수행하여 코드에서 캐시 누락을 정확하게 찾아냅니다.

cachegrind는 코드의 각 라인에 대해 실행된 메모리 참조, 캐시 미스 및 명령의 수를 식별할 수 있습니다. 여기서 이러한 작업은 기능별, 모듈별 및 전체 프로그램 요약으로 수행됩니다. cachegrind는 모든 언어와 함께 사용할 수 있지만 프로그램 실행 속도가 느려집니다.

위에서 언급했듯이 callgrindcachegrind의 확장입니다. 콜 그래프를 포함한 추가 기능이 있는 cachegrind와 유사하게 작동할 수 있습니다.

callgrindcallgrind에 의해 수집된 데이터의 더 나은 개요를 제공할 수 있는 KCacheGrind라는 시각화에서 cachegrind와 함께 포함되었습니다. 이 도구는 cachegrind 도구를 시각화하는 데에도 사용할 수 있습니다.

Valgrind는 macOS, Linux 및 WSL 시스템에서 지원됩니다. Valgrind는 여기에서 다운로드할 수 있습니다.

TAU 성능 시스템

TAU 성능 시스템은 C, C++, Fortran, Java, Python 및 UPC로 작성된 프로그램의 성능 분석을 위한 휴대용 추적 툴킷 및 프로파일링 도구입니다.

Tunning Analysis and Utilities로 약칭되는 TAU는 함수, 기본 블록, 명령문, 메서드 및 이벤트 기반 샘플링의 계측을 사용하여 성능 정보를 수집하는 데 사용됩니다.

다음은 TAU의 몇 가지 주요 기능입니다.

  1. TAU는 C++의 모든 기능을 지원합니다.
  2. TAU는 계측을 구성하고 제어하는 데 도움이 되는 프로파일링 그룹 선택을 제공합니다.
  3. TAU는 성능 분석 결과의 그래픽 결과에 사용할 수 있는 프로필 시각화 도구 paraprof를 제공합니다.
  4. TAU를 사용하면 성능 점수를 빠르게 확인할 수 있습니다.
  5. TAU는 또한 vampir, paravar 또는 Jumpshot 시각화 도구와 같은 도구를 사용하여 추가로 표시할 수 있는 이벤트 추적을 생성할 수 있습니다.

TAU 성능 시스템은 이 링크에서 다운로드할 수 있습니다.

AMD 마이크로프로프

AMD는 Windows, Linux 및 FreeBSD 플랫폼의 x86 애플리케이션을 분석하는 데 사용할 수 있는 프로파일링 소프트웨어 μProf를 제공합니다. 이 도구는 개발자가 애플리케이션 성능의 한계를 이해하는 데 도움이 되며 성능을 개선하는 데 사용할 수 있습니다.

AMD μProf는 다음과 같은 주요 기능을 제공합니다.

  1. 애플리케이션의 성능 병목 현상을 식별하는 데 사용되는 성능 분석을 제공합니다.
  2. 또한 시스템 분석 및 모니터링 시스템 성능 메트릭을 제공합니다.
  3. 또한 시스템의 열 및 전력 특성을 모니터링할 수 있는 전력 프로파일링을 제공합니다.
  4. 또한 호스트 Windows 시스템에서 원격 Linux 시스템에 연결하여 원격 시스템에서 데이터 수집을 트리거한 다음 GUI에 보고하는 데 사용할 수 있는 원격 프로파일링을 제공합니다.
  5. 또한 애플리케이션 창의 에너지 핫스팟을 식별하는 데 사용할 수 있는 에너지 분석을 제공합니다.

AMD μProf는 Linux 및 Windows에서 지원됩니다. AMD μProf에 대한 자세한 정보 및 다운로드를 보려면 이 링크로 이동하십시오.

우리는 C++을 위한 최고의 프로파일링 도구 중 일부를 설명했습니다. 이러한 도구는 C++ 프로파일링을 위해 제공되는 도구일 뿐만 아니라; 다른 기능을 가진 다른 도구도 있습니다. 목록은 다음과 같습니다.

  1. Coz – 원인 프로파일러
  2. 성능
  3. 엑스퍼프
  4. Apple 악기
  5. DTrace
  6. 매우 졸리다
  7. 옵틱
  8. 오라클 성능 분석기
  9. ARM 맵
  10. SmartBear AQTime
  11. O프로필
  12. 글로우코드
  13. 쉬운 프로파일러
작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook