forked from v.moiseev/distributed-computing
101 lines
3.9 KiB
C#
101 lines
3.9 KiB
C#
using BenchmarkDotNet.Attributes;
|
||
namespace MatrixCalculator;
|
||
|
||
public class BenchmarkClass
|
||
{
|
||
private readonly int[,] matrix_100_100_1;
|
||
private readonly int[,] matrix_100_100_2;
|
||
|
||
private readonly int[,] matrix_300_300_1;
|
||
private readonly int[,] matrix_300_300_2;
|
||
|
||
private readonly int[,] matrix_500_500_1;
|
||
private readonly int[,] matrix_500_500_2;
|
||
|
||
public BenchmarkClass()
|
||
{
|
||
static int[,] ReadMatrixFromFile(string filePath)
|
||
{
|
||
string[] lines = File.ReadAllLines(filePath);
|
||
int rows = lines.Length;
|
||
int cols = lines[0].Split(' ').Length;
|
||
|
||
int[,] matrix = new int[rows, cols];
|
||
|
||
for (int i = 0; i < rows; i++)
|
||
{
|
||
string[] values = lines[i].Split(' ');
|
||
for (int j = 0; j < cols; j++)
|
||
{
|
||
matrix[i, j] = int.Parse(values[j]);
|
||
}
|
||
}
|
||
|
||
return matrix;
|
||
}
|
||
|
||
string folder = "D:\\4 КУРС\\РВИП\\distributed-computing_liza_fork\\tasks\\voronkova-es\\lab_5\\MatrixCalculator\\Matrix";
|
||
|
||
matrix_100_100_1 = ReadMatrixFromFile(Path.Combine(folder, "100_100_1.txt"));
|
||
matrix_100_100_2 = ReadMatrixFromFile(Path.Combine(folder, "100_100_2.txt"));
|
||
matrix_300_300_1 = ReadMatrixFromFile(Path.Combine(folder, "300_300_1.txt"));
|
||
matrix_300_300_2 = ReadMatrixFromFile(Path.Combine(folder, "300_300_2.txt"));
|
||
matrix_500_500_1 = ReadMatrixFromFile(Path.Combine(folder, "500_500_1.txt"));
|
||
matrix_500_500_2 = ReadMatrixFromFile(Path.Combine(folder, "500_500_2.txt"));
|
||
}
|
||
|
||
[Benchmark]
|
||
public int[,] Def_100_100_Matrix() => DefAlg.MultiplyMatrices(matrix_100_100_1, matrix_100_100_2);
|
||
|
||
[Benchmark]
|
||
public int[,] Def_300_300_Matrix() => DefAlg.MultiplyMatrices(matrix_300_300_1, matrix_300_300_2);
|
||
|
||
[Benchmark]
|
||
public int[,] Def_500_500_Matrix() => DefAlg.MultiplyMatrices(matrix_500_500_1, matrix_500_500_2);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_100_100_Matrix_MAX() => ParallelAlg.MultiplyMatrices(matrix_100_100_1, matrix_100_100_2, -1);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_300_300_Matrix_MAX() => ParallelAlg.MultiplyMatrices(matrix_300_300_1, matrix_300_300_2, -1);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_500_500_Matrix_MAX() => ParallelAlg.MultiplyMatrices(matrix_500_500_1, matrix_500_500_2, -1);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_100_100_Matrix_2() => ParallelAlg.MultiplyMatrices(matrix_100_100_1, matrix_100_100_2, 2);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_300_300_Matrix_2() => ParallelAlg.MultiplyMatrices(matrix_300_300_1, matrix_300_300_2, 2);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_500_500_Matrix_2() => ParallelAlg.MultiplyMatrices(matrix_500_500_1, matrix_500_500_2, 2);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_100_100_Matrix_4() => ParallelAlg.MultiplyMatrices(matrix_100_100_1, matrix_100_100_2, 4);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_300_300_Matrix_4() => ParallelAlg.MultiplyMatrices(matrix_300_300_1, matrix_300_300_2, 4);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_500_500_Matrix_4() => ParallelAlg.MultiplyMatrices(matrix_500_500_1, matrix_500_500_2, 4);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_100_100_Matrix_8() => ParallelAlg.MultiplyMatrices(matrix_100_100_1, matrix_100_100_2, 8);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_300_300_Matrix_8() => ParallelAlg.MultiplyMatrices(matrix_300_300_1, matrix_300_300_2, 8);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_500_500_Matrix_8() => ParallelAlg.MultiplyMatrices(matrix_500_500_1, matrix_500_500_2, 8);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_100_100_Matrix_16() => ParallelAlg.MultiplyMatrices(matrix_100_100_1, matrix_100_100_2, 16);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_300_300_Matrix_16() => ParallelAlg.MultiplyMatrices(matrix_300_300_1, matrix_300_300_2, 16);
|
||
|
||
[Benchmark]
|
||
public int[,] Parallel_500_500_Matrix_16() => ParallelAlg.MultiplyMatrices(matrix_500_500_1, matrix_500_500_2, 16);
|
||
}
|