On Sun, 2008-05-25 at 17:27 +0200, Luc Maisonobe wrote:
> Hello,
> 
> Someone complained recently to me about poor performances of
> RealMatrix.multiply(). A quick check showed me that changing the indices
> checks in RealMatrix.getEntry() tremendously improved the performances
> (about a 3 to 1 ratio in a simple case).
> 
> The current implementation explicitely calls the isValidCoordinate prior
> to getting the element from the underlying array. This method calls
> getRowDimension and getColumnDimension and do the intervals checks. I
> think this is unnecessary and duplicates the checks that are already
> done by the JVM. I would like to replace this by an a posteriori check
> when the JVM triggers an ArrayIndexOutOfBoundException. Basically, this
> means replacing:
> 
>   if (!isValidCoordinate(row,column)) {
>     throw new MatrixIndexException(...);
>   }
>   return data[row][column];
> 
> by:
> 
>   try {
>       return data[row][column];
>   } catch (ArrayIndexOutOfBoundsException e) {
>     throw new MatrixIndexException(...);
>   }
> 
> 
> I have read somewhere that array index checking is now highly optimized
> by JVM and can even be automatically removed in some cases. Do you think
> moving to such a way to handle index errors is sensible ? There are
> several other places where this could be done, so I would like to have
> your comments before doing the changes.

Sounds good to me. I cannot think of any problems that might cause, it
does seem likely to result in a performance improvement, and it looks
safer.

Regards,
Simon


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to