In R when using the cxxfunction from the inline package, how does one change the optimization flag for the cpp compiler?
By default, on my machine, it compiles with -g -O2
. But I would like to use the -O3
optimization to gain speed. I use the Rcpp
plugin if that makes any difference.
I have tried creating my own plugin, and I have tried to set the different arguments of the cxxfunction but nothing worked.
I guess one option would be to compile it using R CMD SHLIB
instead of using cxxfunction
. But Rcpp recommends the use of inline
because most of their test cases are using it.
thanks for your help, let me know if you need any clarification
There are a couple of options:
The best solution is to modify this for all usage by R so create e.g. a file ~/.R/Makevars
and set CFLAGS, CXXFLAGS, ... there. This will affect all use by R CMD INSTALL ...
, R CMD SHLIB ...
etc pp and as cxxfunction()
from inline uses it, it works here too.
Specific to inline and Rcpp: modify the plugin, that's why it is a plugin system. See Rcpp:::Rcpp.plugin.maker()
.
Switch back from cxxfunction()
to cfunction()
, hence do not use a plugin and set all arguments manually.
Needless to say, I like option 1 and use it myself.
Edit: A fourth (and crude !!) method I used to use in the past is to edit $R_HOME/Makeconf
and/or Makeconf.site
.
I can suggest a hack. Write a little wrapper program (also called cpp) which calls the real cpp and passes all arguments to it as is except that it passes -O3 for optimization. Then make sure your program occurs first in the executable path resolution for R.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With