在R中使用inline package中的cxx函数时,如何更改cpp编译器的优化标志?
默认情况下,在我的计算机上,它会使用-g -O2
进行编译。但我想使用-O3
优化来提高速度。我使用Rcpp
插件,如果这有任何区别。
我尝试创建自己的插件,并尝试设置cxx函数的不同参数,但没有任何效果。
我想一个选项是使用R CMD SHLIB
而不是cxxfunction
来编译它。但是Rcpp建议使用inline
,因为他们的大多数测试用例都在使用它。
感谢您的帮助,如果您需要任何澄清,请告诉我
答案 0 :(得分:15)
有几种选择:
最佳解决方案是修改此以用于R 的所有用法,因此请创建例如文件~/.R/Makevars
并设置CFLAGS,CXXFLAGS,.. 。 那里。这将影响R CMD INSTALL ...
,R CMD SHLIB ...
等所有使用情况以及来自内联使用它的cxxfunction()
,它也适用于此。
特定于内联和Rcpp:修改插件,这就是它是一个插件系统的原因。请参阅Rcpp:::Rcpp.plugin.maker()
。
从cxxfunction()
切换回cfunction()
,因此请勿使用插件并手动设置所有参数。
毋庸置疑,我喜欢选项1并自己使用它。
编辑:我过去常用的第四种(粗略!!)方法是修改$R_HOME/Makeconf
和/或Makeconf.site
。
答案 1 :(得分:1)
我可以建议一个黑客。编写一个小包装程序(也称为cpp),它调用真正的cpp并将所有参数传递给它,除了它传递-O3进行优化。然后确保您的程序首先出现在R.
的可执行路径解析中