<br><br><div class="gmail_quote">On Thu, Jan 17, 2013 at 7:25 PM, Dirk Eddelbuettel <span dir="ltr"><<a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Hi Kevin,<br>
<br>
First off, congrats regarding RcppRool. Nice to see another package on<br>
CRAN. I had some follow-up questions as to whether you planned to push this<br>
further: the mean at n+1 is really just adding 1/n of the difference between<br>
the newest and the oldest... but getting these things right is hard. Anyway,<br>
I didn't really have time poke around so consider these questions not asked :)<br></blockquote><div><br></div><div>Thanks! I do plan on extending the package further, but I need to iron out some of the bugs and makes the pseudo-API available within more accessible first. I'm definitely open to new ideas / additions though.</div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><br>
On 17 January 2013 at 18:09, Kevin Ushey wrote:<br>
| Hi guys,<br>
|<br>
| I'm trying to use Rcpp to implement an 'apply'-type function for matrices,<br>
| whereby I apply a function to each row or column of a matrix. I'm testing it<br>
| here with the 'mean' just to see how well we can do vs. the highly optimized<br>
| rowMeans, colMeans functions, but of course any other function taking a vector<br>
| and returning a scalar might fit here.<br>
|<br>
| I'm wondering if I can do better. Please see the gist in the link here; you can<br>
| sourceCpp it in R.<br>
|<br>
| <a href="https://gist.github.com/4561281" target="_blank">https://gist.github.com/4561281</a><br>
|<br>
| I try to limit the amount of copying as much as possible with<br>
| NumericMatrix::Column and NumericMatrix::Row.<br>
|<br>
| Note that the Rcpp solution over columns is just as fast as colMeans, but over<br>
| rows it's a fair bit slower relative to rowMeans. Is there any way I could<br>
| improve this?<br>
<br>
</div>I never measured. I always stopped at the simple sapply/lapply<br>
implementations I showed in the talks/workshops.<br>
<br>
One problem is column-wise storage of vectors. For kicks, can you see what<br>
happens when for rowMeans you do a transpose and then compute colMeans ?<br></blockquote><div><br></div><div>It's still faster to just compute the rowMeans compared to column means on the transpose, for different sizes of matrices... Interestingly though, the Rcpp rowMeans actually runs faster (!) than base-R rowMeans for a matrix w/ 1E4 rows, 1E2 columns, so the relative speed does depend on the size / shape of the matrix. I'm always a little surprised to learn these things.</div>
<div><br></div><div>Regardless, an Rcpp 'apply' solution is almost always faster than the corresponding R 'apply' solution.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><br>
| I plan to submit an expanded version of this to the Rcpp gallery so any advice<br>
| is appreciated!<br>
<br>
</div>That;s the spirit -- let's grow <a href="http://gallery.Rcpp.org" target="_blank">http://gallery.Rcpp.org</a> which is meant to be<br>
open for contributions.<br></blockquote><div><br></div><div>I will have something nifty to submit tomorrow. :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Cheers,  Dirk<br>
<span><font color="#888888"><br>
--<br>
Dirk Eddelbuettel | <a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a> | <a href="http://dirk.eddelbuettel.com" target="_blank">http://dirk.eddelbuettel.com</a><br>
</font></span></blockquote></div><br>