Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Random;
- public class Matrix {
- private int[][] matrix;
- private int size;
- public Matrix(int size) {
- this.size = size;
- matrix = new int[size][size];
- fill();
- }
- public void fill() {
- Random random = new Random();
- for (int i = 0; i < matrix.length; i++)
- for (int j = 0; j < matrix.length; j++)
- matrix[i][j] = random.nextInt();
- }
- public int[][] getMatrix(Matrix matrix) {
- return matrix.matrix;
- }
- /*
- public void print(Matrix matrix) {
- for (int i = 0; i < matrix.size; i++) {
- System.out.println();
- for (int j = 0; j < matrix.size; j++)
- System.out.print(matrix.matrix[i][j] + " ");
- }
- }
- */
- public void Multiply1(Matrix matrix1, Matrix matrix2) {
- Matrix matrix3 = new Matrix(matrix1.size);
- for (int i = 0; i < matrix1.size; i++)
- for (int j = 0; j < matrix1.size; j++) {
- matrix3.matrix[j][i] = 0;
- for (int k = 0; k < matrix1.size; k++)
- matrix3.matrix[j][i] += matrix1.matrix[k][j] * matrix2.matrix[i][k];
- }
- }
- public void Multiply2(Matrix matrix1, Matrix matrix2) {
- int[][] matrixL1 = getMatrix(matrix1), matrixL2 = getMatrix(matrix2);
- Matrix matrix3 = new Matrix(matrix1.size);
- int[][] matrixL3 = getMatrix(matrix3);
- for (int i = 0; i < matrixL1.length; i++)
- for (int j = 0; j < matrixL1.length; j++) {
- matrixL3[j][i] = 0;
- for (int k = 0; k < matrixL1.length; k++)
- matrixL3[j][i] += matrixL1[k][j] * matrixL2[k][i];
- }
- }
- }
- size=512:
- Multiply2 time: 0.406s | Multiply1 time: 0.259s
- Multiply1 faster than Multiply2 for 156%
- size=1024:
- Multiply2 time: 17.004s | Multiply1 time: 3.262s
- Multiply1 faster than Multiply2 for 521%
- size=2048:
- Multiply2 time: 236.791s | Multiply1 time: 115.155s
- Multiply1 faster than Multiply2 for 205%
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement