Я только начал использовать инструменты производительности Google (пакеты google-perftools
и libgoogle-perftools4
в Ubuntu), клянусь, что я гуглил около день, и я не нашел ответа!!
Проблема в том, что я не получаю результат для ВСЕХ своих функций с профилированием ЦП. Вот мой код:
#include "gperftools/profiler.h"
#include <iostream>
#include <math.h>
using namespace std;
void bar()
{
int a,b,c,d,j,k;
a=0;
int z=0;
b = 1000;
while(z < b)
{
while (a < b)
{
d = sin(a);
c = cos(a);
j = tan(a);
k = tan(a);
k = d * c + j *k;
a++;
}
a = 0;
z++;
}
}
void foo()
{
cout << "hey " << endl;
}
int main()
{
ProfilerStart("/home/mohammad/gperf/dump.txt");
int a = 1000;
while(a--){foo();}
bar();
ProfilerFlush();
ProfilerStop();
}
Скомпилировано как g++ test.cc -lprofiler -o a.out
Вот как я запускаю код:
CPUPROFILE=dump.txt ./a.out
Я также пробовал это:
CPUPROFILE_FREQUENCY=10000 LD_PRELOAD=/usr/local/lib/libprofiler.so.0.3.0 CPUPROFILE=dump.txt ./a.out
И это вот что я получаю от google-pprof --text a.out dump.txt
:
Using local file ./a.out.
Using local file ./dump.txt.
Total: 22 samples
8 36.4% 36.4% 8 36.4% 00d8cb04
6 27.3% 63.6% 6 27.3% bar
3 13.6% 77.3% 3 13.6% __cos (inline)
2 9.1% 86.4% 2 9.1% 00d8cab4
1 4.5% 90.9% 1 4.5% 00d8cab6
1 4.5% 95.5% 1 4.5% 00d8cb06
1 4.5% 100.0% 1 4.5% __write_nocancel
0 0.0% 100.0% 3 13.6% __cos
Но нет никакой информации о функции foo!
информация о моей системе: убунту 12.04 g++ 4.6.3
Вот и все!