Hi Konrad,

On 10 August 2022 at 08:22, konrad wrote:
| I have a question regarding the cost of .Call. If I implement the 
| rosenbrock function in R and in Rcpp. The R version is substentially 
| faster then the C++ version. The Rcpp function is basically an R 
| function which calls the C++ function using .Call. Which part of the 
| code generates this overhead of the Rcpp function. Is it the .Call 
| itself or the conversion of the types from R to Rcpp? Or have I done 
| something wrong?

It's just a not a meaningful benchmark as there are essentially no operations
on the R side either.

And Rcpp, by making it _convenient_ injects some extra code and tests and
state keeping all of which is documented and for which you have some toggles
to suppress at least parts.

But in short, it's a non-question. By all means keep exploring Rcpp but you
will need something meatier for it to make sense. You should have no problem
finding examples.

Cheers, Dirk

| 
| library(Rcpp)
| library(microbenchmark)
| 
| 
| fr <- function(x) {   ## Rosenbrock Banana function
|    x1 <- x[1]
|    x2 <- x[2]
|    100 * (x2 - x1 * x1)^2 + (1 - x1)^2
| }
| 
| sourceCpp(code = "
| #include <Rcpp.h>
| 
| // [[Rcpp::export]]
| double fr_rcpp(Rcpp::NumericVector x) {
|    double x1 = x[0];
|    double x2 = x[1];
|    return 100 * (x2 - x1 * x1)*(x2 - x1 * x1) + (1 - x1)*(1 - x1);
| }
| ")
| 
| x <- c(1, 2)
| identical(fr(x), fr_rcpp(x))
| 
| r <- microbenchmark(fr(x), fr_rcpp(x))
| boxplot(r)
| 
| 
| Thank you very much for your help!
| 
| 
| All the best,
| 
| 
| Konrad
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel@lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
-- 
dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org
_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to