Правильно ли использовать gperftools для профилирования R-скрипта с помощью RCpp?

Я пытаюсь профилировать скрипт 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

Ни одна запись в последнем столбце не читается человеком, поэтому мне интересно, есть ли какой-нибудь способ сделать их читабельными?

Интересно, я что-то пропустил? Спасибо!

1

Решение

Вместо

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
1

Другие решения


По вопросам рекламы [email protected]