Implementation:
Internally holds one single contigous one-dimensional array, addressed in (in decreasing order of significance): slice major, row major, column major. Note that this implementation is not synchronized.
Memory requirements:
memory [bytes] = 8*slices()*rows()*columns(). Thus, a 100*100*100 matrix uses 8 MB.
Time complexity:
O(1) (i.e. constant time) for the basic operations get, getQuick, set, setQuick and size,
Applications demanding utmost speed can exploit knowledge about the internal addressing. Setting/getting values in a loop slice-by-slice, row-by-row, column-by-column is quicker than, for example, column-by-column, row-by-row, slice-by-slice. Thus
for (int slice=0; slice < slices; slice++) { for (int row=0; row < rows; row++) { for (int column=0; column < columns; column++) { matrix.setQuick(slice,row,column,someValue); } } }is quicker than
for (int column=0; column < columns; column++) { for (int row=0; row < rows; row++) { for (int slice=0; slice < slices; slice++) { matrix.setQuick(slice,row,column,someValue); } } }@author wolfgang.hoschek@cern.ch @version 1.0, 09/24/99
|
|
|
|
|
|
|
|