[Rcpp-devel] Rcpp ISNAN slower than C ISNAN?
William Dunlap
wdunlap at tibco.com
Tue Dec 13 17:59:34 CET 2016
Could the c++ slowdown be due to the fact that Rinternals.h defines ISNAN
differently for C and C++? For C it uses the compiler's isnan macro, for
C++ it calls the function R_isnancpp.
Bill Dunlap
TIBCO Software
wdunlap tibco.com
On Tue, Dec 13, 2016 at 5:04 AM, Christian Gunning <xian at unm.edu> wrote:
> > | for (i = 0; i < numObjects; i++) {
> > | for (j = 0; j < numCodes; j++) {
> > | dist = 0;
> > | for (k = 0; k < numVars; k++) {
> > | if (!ISNAN(data[i * numVars + k])) {
> > | tmp = data[i * numVars + k] - codes[j * numVars + k];
> >
> > Why not drop data and codes and use sData1(i,k) - sData2(j,k) ?
>
> Or better yet, just use the original code with NumericMatrix:
> sData1[i * numVars + k] does the right thing.
> I don't get any timing difference based on this change.
>
> Using Rcpp sugar
> (https://cran.r-project.org/package=Rcpp/vignettes/Rcpp-sugar.pdf),
> and moving the call outside the loop, appears to do the right thing.
>
> ## modified example
> ## see edits here:
> https://github.com/helmingstay/rcpp-timings/blob/
> master/diff/rcppdist.cpp#L24
> git clone https://github.com/helmingstay/rcpp-timings
> cd rcpp-timings/diff
> R --vanilla < glue.R
>
> best,
> Christian
>
> >
> > That still doesn't explain the slowdowns though. Could you prepare a
> > _complete_ yet minimal example along with mock data?
> >
> > Dirk
> >
> > --
> > http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
> >
>
> --
> A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal – Panama!
> http://www.x14n.org
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20161213/2f893f65/attachment.html>
More information about the Rcpp-devel
mailing list