Linux에서 C ++를 실행하는 일부 코드를 프로파일 링해야합니다. 프로파일 러를 추천 해 주시겠습니까?
Linux에서 C ++를 실행하는 일부 코드를 프로파일 링해야합니다. 프로파일 러를 추천 해 주시겠습니까?
답변:
gprof를 사용하십시오.
-pg
플래그를 사용하여 컴파일하고 (확실하지 않지만) 최적화를 설정해야한다고 생각합니다. gprof를 사용하여 실행 파일이 생성 할 gmon.out 파일을 분석합니다.
예 :
gcc -pg -o whatever whatever.c
./whatever
gprof whatever gmon.out
g ++ 및 cpp도 마찬가지입니다.
RotateRight ( http://www.rotateright.com )의 확대 / 축소 는 제가 사용해온 것입니다. 함수의 나비보기가 있으며 함수를 두 번 클릭하여 소스 또는 asm 코드로 이동할 수 있습니다. 소스를 보려면 디버깅 정보 (-g)로 빌드하지만 최적화 된 코드를 빌드하고 프로파일 링해야 합니다.
-fno-omit-frame-pointer
효과적인 프로파일 링 을 위해 코드를 빌드해야한다는 점을 언급 할 가치가 있습니다 .
나는 Oprofile 의 팬입니다 . 그것은 커널 모듈 설치를 포함하고 그것에 대한 약간의 학습 곡선을 가지고 있지만 상당히 강력하고 디버깅 기호없이 최적화 된 프로그램 / 프로그램에 매우 잘 작동합니다.
Vtune 은 Intel에서 만든 또 다른 매우 강력한 프로파일 러입니다. Linux 버전은 비상업적 소프트웨어에 대해 무료라고 생각합니다.
도있다 Valgrind의의 DFA에 의해 제안 된 도구 제품군. Callgrind는 아마도 여러분이 가장 관심을 가질 것입니다. Cachegrind (이 기능 세트는 Callgrind의 하위 집합입니다)와 Massif도 흥미롭지 만 후자에 대해서는 경험이 없습니다.
한 번 봐 가지고 KCacheGrind 에 그래픽 프론트 엔드입니다 Valgrind의 그것은 정말 쉽게 사용 할 수 있습니다.
Google은 또한 google-perftools의 일부로 멋진 프로파일 러를 가지고 있습니다. 이는 Debian / Ubuntu 및 기타 배포판에 포함되어 있습니다.
prof
.
prof
어쨌든 시작하는 것이 합리적이라고 생각합니다. 그것이 f()
통계적으로 가장 문제가되는 f()
함수라고 생각되면 처음에 멈춘 임의의 함수로 시작하는 대신에 착륙 할 때까지 프로그램을 여러 번 중지 할 것입니다.