Я пытаюсь профилировать скрипт R с последним (третьим) подходом в http://pj.freefaculty.org/blog/?p=140. Интересно, правильно ли то, что я делаю (описано ниже)?
Во-первых, в my.cpp
ссылка говорит добавить #include <gperftools/profiler.h>
, который
не работает для меня Я обнаружил, что заголовок находится в другом
Дир, и что работает для меня #include <google/profiler.h>
,
Затем я поместил следующее вокруг некоторого кода для профилирования
ProfilerStart("./myprofile.log")
//the part of the code to be profiled
ProfilerStop()
Следующий,
Я создал скрипт mytest.R, который содержит следующее
Sys.setenv("PKG_LIBS"="-lprofiler")
sourceCpp('my.cpp') # for compiling the cpp file
... (use some functions defined in my.cpp
Наконец, когда я бегу в Баш
$ R -f mytest.R
он запускает сеанс R, запустить содержимое mytest.R
внутри R и выход из R после вывода
PROFILE: interrupts/evictions/bytes = 353/0/1988
Означает ли это, что профилирование выполнено успешно или нет? «Прерывания» и «выселения» кажутся мне неприятными.
Он генерирует выход профилирования для myprofile.log
, с
$ google-pprof --text /usr/bin/R myprofile.log
я могу видеть
Total: 353 samples
37 10.5% 10.5% 37 10.5% b313b2cb
21 5.9% 16.4% 21 5.9% b313b2b8
18 5.1% 21.5% 18 5.1% b313b2ce
15 4.2% 25.8% 15 4.2% _IO_str_pbackfail
10 2.8% 28.6% 10 2.8% b69be532
9 2.5% 31.2% 9 2.5% b69be520
7 2.0% 33.1% 7 2.0% b69bd111
6 1.7% 34.8% 6 1.7% b313b2dc
6 1.7% 36.5% 6 1.7% b69bd132
5 1.4% 38.0% 5 1.4% b69bb50f
5 1.4% 39.4% 5 1.4% b69bb6d8
4 1.1% 40.5% 4 1.1% b3133bda
4 1.1% 41.6% 4 1.1% b3134c2b
4 1.1% 42.8% 4 1.1% b313b298
4 1.1% 43.9% 4 1.1% b69bd159
3 0.8% 44.8% 3 0.8% b3134c32
3 0.8% 45.6% 3 0.8% b313b29b
3 0.8% 46.5% 3 0.8% b313b2c8
3 0.8% 47.3% 3 0.8% b69bb6e0
3 0.8% 48.2% 3 0.8% b69bb6f1
3 0.8% 49.0% 3 0.8% b69bcef1
3 0.8% 49.9% 3 0.8% b69bd100
Ни одна запись в последнем столбце не читается человеком, поэтому мне интересно, есть ли какой-нибудь способ сделать их читабельными?
Интересно, я что-то пропустил? Спасибо!
Вместо
google-pprof --text /usr/bin/R myprofile.log
если вы выдадите sourceCpp с verbose=T
вы увидите путь к файлу и сгенерированный объектный файл …
Building shared library
--------------------------------------------------------
DIR: /tmp/RtmpyxYB19/sourcecpp_79831e029f
/usr/lib/R/bin/R CMD SHLIB -o 'sourceCpp_2.so' --->8---
так что попробуйте использовать (в этом случае)
google-pprof --text /tmp/RtmpyxYB19/sourcecpp_79831e029f/sourceCpp_2.so myprofile.log