[ 
https://issues.apache.org/jira/browse/MATH-1170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gilles resolved MATH-1170.
--------------------------
    Resolution: Incomplete

Old issue, no patch, not discussed on the ML.

> Add more in-place operations to RealMatrix and RealVector
> ---------------------------------------------------------
>
>                 Key: MATH-1170
>                 URL: https://issues.apache.org/jira/browse/MATH-1170
>             Project: Commons Math
>          Issue Type: Wish
>            Reporter: Brian
>            Priority: Minor
>
> It would be nice if for some methods of RealMatrix and RealVector there were 
> in-place versions of the methods - that would use the existing structures 
> rather than creating new ones.  In some situations it might be more efficient 
> to use the same vector instead of creating many temporary ones each time 
> which then have to be garbage collected, so it would be nice to provide the 
> option.
> An example of a method that could benefit from in-place versions:  
> RealVector.add.  
> There was also a question on stack overflow about this for matrix operations:
> http://stackoverflow.com/questions/20529484/performing-in-place-calculations-with-commons-maths-realmatrix
> There is also a lot of precedents for this kind of behavior, in other 
> languages.
> In other languages, this is sometimes handled behind the scenes - when a 
> self-assignment is found, a new variable is not created - in order to improve 
> performance.  E.g., some functional languages perform such optimizations 
> behind the scenes, and it is used in MATLAB:
> http://blogs.mathworks.com/loren/2007/03/22/in-place-operations-on-data/
> http://undocumentedmatlab.com/blog/internal-matlab-memory-optimizations
> In some ways directly providing the option for in-place operations is 
> preferable because then we could control when it is applied.  It could be 
> used where appropriate within the internals of other methods as well.
> Similarly there is also a convention in Ruby to have a special version of a 
> method, marked with an exclamation point to indicate it is "dangerous" - 
> usually meaning it changes its input - so-called "bang methods".  Many of 
> these are built into the core Ruby, e.g., sort/sort! for arrays, 
> upcase/upcase!, chomp/chomp!, and reverse/reverse! for strings.  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to