I'm trying to minimize the "churn" of memory in R, since I've found
that the cost of allocation plus eventual garbage collection is
frequently the most expensive part of my program.  Being able to make
"in place" modifications is helpful, although I don't yet understand
when a copy is made of an an argument and when an original is passed.
What code would I look at to see how an argument is handled as it is
passed from R to an Rcpp function?   Does the potential duplication
occur only in .Call() or are there Rcpp specific conditions as well?

I think the sort of interface I'm looking for is:
outMatrix = operation(inMatrix1, inMatrix2, optionalOutMatrix)

If the 'optionalOutMatrix' is of sufficient size for the answer, it
will be used and returned.   If it's not provided, or too small, a new
allocation will be made in the way it is done currently.   Are there
any existing interfaces to the BLAS and LAPACK libraries that take
this form, ideally already using the Rcpp classes?   My quick
examination of Armadillo hasn't shown me how to make it work in this
fashion.

My rambling question with more details, measurements, and sample code
is here: 
http://stackoverflow.com/questions/28532493/reusing-existing-memory-for-blas-operations-in-r

Thanks,

Nathan Kurz
n...@verse.com
_______________________________________________
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