20

在 R 中使用内联包中的 cxx 函数时,如何更改 cpp 编译器的优化标志?

默认情况下,在我的机器上,它使用-g -O2. 但我想使用-O3优化来提高速度。Rcpp如果这有什么不同,我会使用插件。

我尝试创建自己的插件,并且尝试设置 cxxfunction 的不同参数,但没有任何效果。

我想一种选择是使用R CMD SHLIB而不是使用cxxfunction. 但是 Rcpp 推荐使用 of,inline因为他们的大多数测试用例都在使用它。

感谢您的帮助,如果您需要任何说明,请告诉我

4

2 回答 2

16

有几个选项:

  1. 最好的解决方案是修改它以供 R 使用,因此创建例如一个文件~/.R/Makevars并在那里设置 CFLAGS、CXXFLAGS...。R CMD INSTALL ...这将影响,R CMD SHLIB ...等 pp的所有使用,并且由于cxxfunction()inline 使用它,它也可以在这里工作。

  2. 具体到 inline 和 Rcpp:修改插件,这就是为什么它是一个插件系统。见Rcpp:::Rcpp.plugin.maker()

  3. 从 切换回cxxfunction()cfunction()因此不要使用插件并手动设置所有参数。

不用说,我喜欢选项 1 并自己使用它。

编辑:我过去使用的第四种(也是粗略的!!)方法是编辑$R_HOME/Makeconf和/或Makeconf.site.

于 2011-04-26T12:31:03.587 回答
1

我可以建议一个黑客。编写一个小包装程序(也称为 cpp),它调用真正的 cpp 并将所有参数按原样传递给它,除了它传递 -O3 进行优化。然后确保您的程序首先出现在 R 的可执行路径解析中。

于 2011-04-26T11:50:58.397 回答