Advertisement
Guest User

Untitled

a guest
Nov 5th, 2014
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.98 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3. public class Matrix {
  4.     private int[][] matrix;
  5.     private int size;
  6.  
  7.     public Matrix(int size) {
  8.         this.size = size;
  9.         matrix = new int[size][size];
  10.         fill();
  11.     }
  12.  
  13.     public void fill() {
  14.         Random random = new Random();
  15.         for (int i = 0; i < matrix.length; i++)
  16.             for (int j = 0; j < matrix.length; j++)
  17.                 matrix[i][j] = random.nextInt();
  18.     }
  19.  
  20.     public int[][] getMatrix(Matrix matrix) {
  21.         return matrix.matrix;
  22.     }
  23.  
  24. /*
  25. public void print(Matrix matrix) {
  26. for (int i = 0; i < matrix.size; i++) {
  27. System.out.println();
  28. for (int j = 0; j < matrix.size; j++)
  29. System.out.print(matrix.matrix[i][j] + " ");
  30. }
  31. }
  32. */
  33.  
  34.     public void Multiply1(Matrix matrix1, Matrix matrix2) {
  35.         Matrix matrix3 = new Matrix(matrix1.size);
  36.         for (int i = 0; i < matrix1.size; i++)
  37.             for (int j = 0; j < matrix1.size; j++) {
  38.                 matrix3.matrix[j][i] = 0;
  39.                 for (int k = 0; k < matrix1.size; k++)
  40.                     matrix3.matrix[j][i] += matrix1.matrix[k][j] * matrix2.matrix[i][k];
  41.             }
  42.     }
  43.  
  44.     public void Multiply2(Matrix matrix1, Matrix matrix2) {
  45.         int[][] matrixL1 = getMatrix(matrix1), matrixL2 = getMatrix(matrix2);
  46.  
  47.         Matrix matrix3 = new Matrix(matrix1.size);
  48.         int[][] matrixL3 = getMatrix(matrix3);
  49.  
  50.         for (int i = 0; i < matrixL1.length; i++)
  51.             for (int j = 0; j < matrixL1.length; j++) {
  52.                 matrixL3[j][i] = 0;
  53.                 for (int k = 0; k < matrixL1.length; k++)
  54.                     matrixL3[j][i] += matrixL1[k][j] * matrixL2[k][i];
  55.             }
  56.     }
  57. }
  58.  
  59. size=512:
  60. Multiply2 time: 0.406s | Multiply1 time: 0.259s
  61. Multiply1 faster than Multiply2 for 156%
  62. size=1024:
  63. Multiply2 time: 17.004s | Multiply1 time: 3.262s
  64. Multiply1 faster than Multiply2 for 521%
  65. size=2048:
  66. Multiply2 time: 236.791s | Multiply1 time: 115.155s
  67. Multiply1 faster than Multiply2 for 205%
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement