[Rcpp-devel] Performance issues with simple list class

Clemens Schmid clemens at nevrome.de
Thu Jun 8 14:29:56 CEST 2017


Dear Rcpp developers,

first of all thank you for your persistent work on and with Rcpp - this
mailinglist is impressive!

I implemented a class_A and a list class_B following this
(https://stackoverflow.com/a/44303993/3216883) example by Romain
Francois in the Rcpp modules framework.
class_A in my setup is far more complex than the example and my factory
function of class_B takes a DataFrame instead of a List. Nevertheless I
didn't include code here - linked example is already quite comprehensive.

I can instantiate objects of class_A in R and store them in the
std::vector in class_B. That works fine. Unfortunately I run into
performance problems with this approach. class_B is supposed to store up
to 100,000 instances of class_A, but the new() call in R for just 2000
already takes far too long (ca. 20s). I tried to figure out what exactly
takes this long and I realized that it's neither the construction of the
individual objects of class_A, nor pushing them into the vector. The
bottleneck seems to be somehow related to how this object of class_B is
exposed to R. That's  especially sad because I don't want to interact a
lot with class_B in R, but mostly use it in my C++-Code. The interaction
with R works with an as.data.frame() function which is again pretty fast.

Do you have any ideas how I could avoid this bottleneck?

Clemens Schmid






More information about the Rcpp-devel mailing list