gprof를 사용하여 개발중인 일부 수치 코드를 프로파일 링하려하지만 gprof가 내 프로그램에서 데이터를 수집하지 못하는 것 같습니다. 여기 내 명령 줄이 있습니다 :gprof는 출력을 제공하지 않습니다.
g++ -Wall -O3 -g -pg -o fftw_test fftw_test.cpp -lfftw3 -lfftw3_threads -lm && ./fftw_test
gmon.out 파일이 생성되었지만 데이터가없는 것으로 보입니다. 내가
gprof -b fftw_test gmon.out > gprof.out
를 실행하면 내가 할 모든
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
Call graph
granularity: each sample hit covers 2 byte(s) no time propagated
index % time self children called name
Index by function name
모든 통찰력은 무엇입니까?
코드는 많은 작업을 수행하지만 단순히 FFTW 루틴을 호출하지 않습니다. 그것은 특정 복소 계수를 계산하는 함수, 이러한 계수로 입력 데이터를 곱하는 함수 등을 포함합니다.
편집 : 예제 코드와 결과가 포함됩니다.
#include <cstdlib>
#include <ctime>
int main()
{
std::srand(std::time(0));
double sum = 0.0;
for (int i = 0; i < RAND_MAX; ++i)
sum += std::rand()/(double) RAND_MAX;
std::cout << sum << '\n';
return 0;
}
명령 라인 :
$ g++ -Wall -O3 -g -pg -o gprof_test gprof_test.cpp && ./gprof_test
1.07374e+09
$ gprof -b gprof_test gmon.out > gprof.out
$ cat gprof.out
결과 :
Flat profile:
Each sample counts as 0.01 seconds.
no time accumulated
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
Call graph
granularity: each sample hit covers 2 byte(s) no time propagated
index % time self children called name
Index by function name
그리고 그것 뿐이다.
하나의 상호 작용이 아닌가요? 글쎄, 나는 리눅스 용 퍼펙트 툴을 시도해 보았지만 좋은 일을하는 것처럼 보이지만, 출력을 해석하는 것은 간단한 문제가 아니다. 저는 저의 "poor-man profiler"수업을 가지고 저를 도와 주었고 계산 시간을 상당히 줄였습니다. – Elias
엘리아스, 이상합니다. Mike https://stackoverflow.com/users/23771/mike-dunlavey는 일반적으로 [프로파일 링]으로 태그 된 거의 모든 질문에서 통계적으로 입증되지 않은 특허 5 건의 무작위 백 트레이스 gdb 가난한 사람을 프로파일 링 할 것을 권장합니다. gprof가 손상되었을 수 있습니다. OS는 무엇입니까? 일부 데이터를 채우고 fftw를 빈 gprof 보고서로 호출하여 귀하의 사례를 테스트 할 수있게 해주는 간단한 프로그램 변형을 만들거나 (fftw lib 예제에서 찾을 수 있습니까?) – osgx
간단한 기본 프로그램에서 동일한 문제가 있습니다. Archlinux에서 gcc 7.2.0 gprof 2.29.1. 그것은 무언가가 호환되지 않는 것처럼 보입니다. –