benchmarks/matrix-multiplication/src/main/java/org/apidesign/benchmark/matrixmul/Matrix.java
author Martin Soch <Martin.Soch@oracle.com>
Wed, 05 Dec 2012 11:18:09 +0100
branchbenchmarks
changeset 268 e01b65623f72
child 314 1a3f102e5ea5
permissions -rw-r--r--
first version of benchmarks
- currently only one benchmark - matrix multiplication
     1 package org.apidesign.benchmark.matrixmul;
     2 
     3 //import java.io.PrintStream;
     4 //import java.util.Random;
     5 
     6 public class Matrix {
     7 
     8     private final int rank;
     9     private float data[][];
    10     
    11     public Matrix(int r) {
    12         rank = r;
    13         data = new float[r][r];
    14     }
    15     
    16     public void setElement(int i, int j, float value) {
    17         data[i][j] = value;
    18     }
    19     public float getElement(int i, int j) {
    20         return data[i][j];
    21     }
    22     
    23     public void generateData() {
    24         //final Random rand = new Random();
    25         //final int x = 10;
    26         for (int i = 0; i < rank; i++) {
    27             for (int j = 0; j < rank; j++) {
    28                 data[i][j] = i + j;
    29             }
    30         }
    31     }
    32 
    33     public Matrix multiply(Matrix m) {
    34         if (rank != m.rank) {
    35             throw new IllegalArgumentException("Rank doesn't match");
    36         }
    37         
    38         final float res[][] = new float[rank][rank];
    39         for (int i = 0; i < rank; i++) {
    40             for (int j = 0; j < rank; j++) {
    41                 float ij = 0;
    42                 for (int q = 0; q < rank; q++) {
    43                     ij += data[i][q] * m.data[q][j];
    44                 }
    45                 res[i][j] = ij;
    46             }
    47         }
    48         data = res;
    49         
    50         return this;
    51     }
    52     
    53     /*
    54     public void printOn(PrintStream s) {
    55         for (int i = 0; i < rank; i++) {
    56             for (int j = 0; j < rank; j++) {
    57                 s.printf("%f ", data[i][j]);
    58             }
    59             s.println();
    60         }
    61     }
    62     */
    63     
    64 }