using the matrix package. For more explanations, on how to interpret and run benchmarks on your own boxes, see the documentation of class BenchmarkMatrix.

OS | Linux | Your config. |

OS Config. | Red Hat 6.1, Kernel 2.2.12-20smp | |

HW | 2 x PentiumIII@600 MHz, 512 MB, 32 KB L1, 2x256 KB L2 (lxplus012.cern.ch) | |

VM | IBMJDK1.3, Classic VM, build cxdev-20000502, jitc | |

Performance | here |

Here the result for the matrix matrix multiply with one thread and the parallel version with two threads.

Each operation is timed varying the following parameters

*Implementation type*-`DenseDoubleMatrix2D, SparseDoubleMatrix2D`*Density*- the fraction of cells in non-zero state (randomly assigned)*Size*- all matrices are square with the given number of rows and columns*Computer Architecture, Operating System and Virtual Machine*

Methodology

- Measurements given in
*Mops/sec*(10^6 ops/sec) and*Mflops/sec*(10^6 flops/sec).`A[i,j]=B[k,l]`counts as`1`op whereas`sum += A[i,j]*B[k,l]`counts as`2`flops. For sparse implementations Mops and Mflops are expressed in relation to the dense base line implementation: If an operation on a dense matrix executes at 10 Mflops/sec but takes 2 times longer to complete on a sparse matrix, the sparse matrix is said to have a performance of 10/2=5 Mflops.

- All machines are empty.

- No explicit invocation of garbage collection within and between runs (there
is not much to collect).

- Each operation is repeated for at least 2 seconds (see command line); the
mean of all repetitions is reported.

- Some parameter combinations that do not occur in practice (but would take
lots of memory and time) are not benchmarked; they appear in the tables as
NaN's (this is
*not*an error). For example, it is possible to multiply two matrices of type`SparseDoubleMatrix2D`which are in fact very dense. However, it doesn't make a lot of sense; one would take`DenseDoubleMatrix2D`for such purposes.

Command line: `java -Xmx400m cern.colt.matrix.bench.BenchmarkMatrix -file
all `

Below some results from an old version 1.0Beta4-1. Of historic interest only.

OS | Linux | Linux | Linux | Solaris |

OS Config. | Red Hat 6.1, Kernel 2.2.12-20 | Red Hat 6.1, Kernel 2.2.12-20 | Red Hat 6.1, Kernel 2.2.12-20 | Solaris 2.6 (aka SunOS 5.6) |

HW | 1 x PentiumIII@600 MHz, 128 MB, 32 KB L1, 256 KB L2 (linuxosdev.cern.ch) | 1 x PentiumIII@600 MHz, 128 MB, 32 KB L1, 256 KB L2 (linuxosdev.cern.ch) | 1 x PentiumIII@600 MHz, 128 MB, 32 KB L1, 256 KB L2 (linuxosdev.cern.ch) | Sun 450, 2 x Ultrasparc-II@400 MHz (1 CPU used), 256 MB, 32 KB L1, 4 MB L2 (shd70.cern.ch) |

VM | IBMJDK1.1.8 | BlackdownJDK1.2.2RC3, Classic VM, native threads, sunwjit | SunInpriseJDK1.2.2RC1, Classic VM (build 1.2.2-I, green threads, javacomp) | SunJDK1.2.2, Classic VM |

Performance | here | here | here | here |