[Rcpp-commits] r2193 - papers/rjournal
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Sun Sep 26 15:52:20 CEST 2010
Author: edd
Date: 2010-09-26 15:52:20 +0200 (Sun, 26 Sep 2010)
New Revision: 2193
Modified:
papers/rjournal/EddelbuettelFrancois.tex
Log:
follow-up on two "meta discussions"
moved 'recent development' from summary into section preceding it
Modified: papers/rjournal/EddelbuettelFrancois.tex
===================================================================
--- papers/rjournal/EddelbuettelFrancois.tex 2010-09-26 13:51:29 UTC (rev 2192)
+++ papers/rjournal/EddelbuettelFrancois.tex 2010-09-26 13:52:20 UTC (rev 2193)
@@ -843,6 +843,11 @@
% convolve2, it fetches the pointer just once for each vector.
% where as the version you called naive before did fetch the pointer
% many times, which involves a function call with conformity checks etc ...
+% [dirk] : I got tricked by you there when you originally added convolve7
+% I missed any (non-existing :-) comment in the file saying that
+% the additional REAL macros were there for a test --- I had
+% thought this was how it was presented in the manual. It;s not.
+% I'll revert the example and that closes this (non-)issue. Sorry.
We have benchmarked the various implementations by averaging over 5000 calls
of each function with \code{a} and \code{b} containing 200 elements
@@ -864,6 +869,10 @@
% to one sentence. I would *much rather* talk about the naive R API.
% [romain] : please make up your mind. you just said above that there was no
% story
+% [dirk] : two different issues. "No story" is about the the R API being
+% dog-slow when used badly. *This* discussion here is about how
+% much we want to keep about 'classic Rcpp' and I like what we
+% have now
The second-slowest solution uses the more efficient new \pkg{Rcpp} API. While
already orders of magnitude faster than the preceding solution, it
@@ -877,13 +886,43 @@
Finally, the fastest implementation uses Rcpp sugar. It performs
significantly better than the base case: explicit loop unrolling provides
-vectorization at the C++ level which is responsible for this speedup. This
-shows that careful use of C++ can offer speedups not attainable even in
-efficient C.
+vectorization at the C++ level which is responsible for this speedup.
+%This
+%shows that careful use of C++ can offer speedups not attainable even in
+%efficient C.
% [romain] : the last sentence is a bit strong: one could do the unrolling in C !
% I would just remove it. or maybe phrase it differently. Loop unrolling
% is smart, but Rcpp provides the smartness, the user does not have to.
+% [dirk] : Ok
+\section{Recent development}
+
+The \code{Rcpp} package is in active development, and recent work focuses on
+even better interoperability between R and C++.
+% should we plug the next article ... to be continued
+Two main themese are `Rcpp sugar' as well as `Rcpp modules' both of which are
+discussed in vignettes in the package.
+% Add citations to vignettes ?
+
+`Rcpp sugar' brings syntactic
+sugar at the C++ level, including optimized binary operators and many
+R functions such as \code{ifelse}, \code{sapply}, \code{any}, ...
+The main technique used in Rcpp sugar is
+expression templates pioneered by the Blitz++ library \cite{Blitz}
+and adopted since
+by many projects such as Armadillo \cite{Armadillo}. Direct vectorised
+access to most of the d/p/q/r-variants of the statistical distribution
+functions has also been added.
+
+`Rcpp modules' allows programmers to expose C++ functions and classes
+at the R level. This offers access to C++ code from R using even less
+interface code than by writing accessor function. Modules are inspired from
+the \code{Boost.Python} library
+\cite{Boost:Python} that provides similar functionality for Python. C++ Classes
+exposed by Rcpp modules are shadowed by reference classes that have been
+introduced in R 2.12.0.
+
+
\section{Summary}
The \code{Rcpp} package presented here greatly simplifies integration of
@@ -911,24 +950,6 @@
The \code{Rcpp} API offers opportunities to dramatically reduce the complexity
of code, which should improve code readability, maintainability and reuse.
-The \code{Rcpp} package is in active development, and recent work focuses on
-even better interoperability between R and C++.
-% should we plug the next article ... to be continued
-
-`Rcpp sugar' brings syntactic
-sugar at the C++ level, including optimized binary operators and many
-R functions such as \code{ifelse}, \code{sapply}, \code{any}, ...
-The main technique used in Rcpp sugar is
-expression templates pioneered by the Blitz++ library \cite{Blitz}
-and adopted since
-by many projects such as Armadillo \cite{Armadillo,}.
-
-`Rcpp modules' allows programmers to expose C++ functions and classes
-at the R level. Modules are inspired from the \code{Boost.Python} library
-\cite{Boost:Python} that provides similar functionality for Python. C++ Classes
-exposed by Rcpp modules are shadowed by reference classes that have been
-introduced in R 2.12.0.
-
\bibliography{EddelbuettelFrancois}
\address{Dirk Eddelbuettel\\
More information about the Rcpp-commits
mailing list