我用Rcpp创建了一个R包,其中整个模拟在c ++中运行,结果在R中进行分析。现在我需要分析我的函数以便我可以对它们进行优化,但R剖析器无法区分C ++函数内部发生的情况,当函数只能从R里面运行时,我不知道如何运行C ++分析器。
到目前为止,我已经找到了一些使用gperftools(questions和tutorials)的建议,但指南不完整(可能他们假定我缺乏一定程度的知识?),缺少链接,我一直跑到墙上。因此这个问题。这就是我所在的地方:
当前的墙是gcc告诉我“未定义的符号:ProfilerStart”,所以我认为链接有问题?
答案 0 :(得分:1)
我对gperftools并没有给人留下太深刻的印象。此外,它似乎是一个仪表分析器,基于采样的分析器更易于使用,并且可能运行得更快。 Intels VTune是一款出色的基于抽样的分析器,如果您是教育用户,则可免费使用。即使您不是,您的组织也可能已拥有许可证。
转向你的gperftools问题,是的,这是一个链接器问题。由于您已决定不共享任何相关信息(链接命令?编译命令?实际错误消息?),我们无法为您提供进一步的帮助。
答案 1 :(得分:0)
毕竟这是一个链接错误,由于我缺乏经验,因为这是我第一次使用Makevars。
在步骤#4中,我将“-lprofiler”添加到PKG_CXXFLAGS
,用于编译,我应该将其添加到PKG_LIBS
。我做了改变,现在探查器工作得很好。这是我的Makevars现在:
PKG_CXXFLAGS += -Wall -pedantic -g -ggdb #-fno-inline-small-functions
PKG_LIBS += -lprofiler
CXX_STD = CXX11