[
https://issues.apache.org/jira/browse/MATH-316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12772572#action_12772572
]
Jake Mannix commented on MATH-316:
----------------------------------
or course, out.clone() should be data.clone();
> Perf improvement: ArrayRealVector makes superfluous copies and often doesn't
> optimally operate on array values
> --------------------------------------------------------------------------------------------------------------
>
> Key: MATH-316
> URL: https://issues.apache.org/jira/browse/MATH-316
> Project: Commons Math
> Issue Type: Improvement
> Affects Versions: 2.0
> Environment: all
> Reporter: Jake Mannix
> Priority: Minor
> Fix For: 2.1
>
>
> As discussed in the mailing list, things like ArrayRealVector#add:
> {code}
> double[] out = new double[data.length];
> for (int i = 0; i < data.length; i++) {
> out[i] = data[i] + v.getEntry(i);
> }
> return new ArrayRealVector(out);
> {code}
> can be improved in the inner loop by simply
> {code}
> double[] out = out.clone();
> for (int i = 0; i < data.length; i++) {
> out[i] += v.getEntry(i);
> }
> return new ArrayRealVector(out);
> {code}
> Which cuts down on array accesses.
> Even more importantly, the last return line should pass in the boolean false,
> for "shallow copy", or else this whole temporary array is being copied again
> and then the original discarded.
> {code}
> return new ArrayRealVector(out, false);
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.