<p>In <a href="https://github.com/mlpack/mlpack/pull/726#discussion_r73703993">src/mlpack/core/tree/binary_space_tree/rp_tree_mean_split_impl.hpp</a>:</p>
<pre style='color:#555'>&gt; +
&gt; +template&lt;typename BoundType, typename MatType&gt;
&gt; +bool RPTreeMeanSplit&lt;BoundType, MatType&gt;::GetMeanMedian(
&gt; +    const MatType&amp; data,
&gt; +    const arma::uvec&amp; samples,
&gt; +    arma::Col&lt;ElemType&gt;&amp; mean,
&gt; +    ElemType&amp; splitVal)
&gt; +{
&gt; +  std::vector&lt;ElemType&gt; values(samples.n_elem);
&gt; +
&gt; +  mean.zeros(data.n_rows);
&gt; +
&gt; +  for (size_t k = 0; k &lt; samples.n_elem; k++)
&gt; +    mean += data.col(samples[k]);
&gt; +
&gt; +  mean /= samples.n_elem;
</pre>
<p>This is a low-priority suggestion, so if you don't have time to look into it, I don't think it will make much difference.  So, I am wondering if you could use non-contiguous matrix views here to accomplish the same thing.  You could do something like...</p>

<pre><code>arma::mean(data.cols(samples), 1);
</code></pre>

<p>But the question is whether or not the template metaprogramming inside Armadillo will produce something equivalently fast to what you have written above, or if it will instead do something less smart, like instantiating a whole new matrix to hold the subview, and then calculating the mean for that matrix.  I think you could determine this either by inspecting the Armadillo codebase or by just writing a test and comparing.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/mlpack/mlpack/pull/726/files/e14a26f3e209af0608cb61ecaa5e30f253e72e9b#r73703993">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJ4bFPtwpLWdlrKbbq4hiK63id3Y-6Slks5qc0yUgaJpZM4JOuGE">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFDJ4RaOJovUYAJdZcYLsWLqIiSV6ks5qc0yUgaJpZM4JOuGE.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/mlpack/mlpack/pull/726/files/e14a26f3e209af0608cb61ecaa5e30f253e72e9b#r73703993"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/mlpack/mlpack","title":"mlpack/mlpack","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/modules/aws/aws-bg.jpg","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/mlpack/mlpack"}},"updates":{"snippets":[{"icon":"PERSON","message":"@rcurtin in #726: This is a low-priority suggestion, so if you don't have time to look into it, I don't think it will make much difference.  So, I am wondering if you could use non-contiguous matrix views here to accomplish the same thing.  You could do something like...\r\n\r\n```\r\narma::mean(data.cols(samples), 1);\r\n```\r\n\r\nBut the question is whether or not the template metaprogramming inside Armadillo will produce something equivalently fast to what you have written above, or if it will instead do something less smart, like instantiating a whole new matrix to hold the subview, and then calculating the mean for that matrix.  I think you could determine this either by inspecting the Armadillo codebase or by just writing a test and comparing."}],"action":{"name":"View Pull Request","url":"https://github.com/mlpack/mlpack/pull/726/files/e14a26f3e209af0608cb61ecaa5e30f253e72e9b#r73703993"}}}</script>