Скорее всего, нужно вывести затраченное время для каждого количества потоков в диапазоне 1...8. Для тестов компилируй в Release и запускай исполняемый файл напрямую.
using System;
using System.Threading;
namespace MatrixTest
{
class Program
{
static void GenerateMatrix(ref int[,] matrix)
{
Random random = new Random();
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
matrix[i, j] = random.Next(1, 1000);
}
}
static int[,] ProcessMatrix(int[,] matrix1, int[,] matrix2, int number, out double elapsedTime)
{
DateTime startTime = DateTime.Now;
for (int i = 0; i < matrix1.GetLength(0); i++)
{
for (int j = 0; j < matrix2.GetLength(1); j++)
{
matrix1[i, j] -= matrix2[i, j];
matrix1[i, j] *= number;
}
}
elapsedTime = (DateTime.Now - startTime).TotalMilliseconds;
return matrix1;
}
static int[,] ProcessMatrixParallel(int[,] matrix1, int[,] matrix2, int number, int threadCount, out double elapsedTime)
{
int length = matrix1.GetLength(0);
int each = length / threadCount;
int last = length % threadCount;
var threads = new Thread[threadCount];
for (int t = 0; t < threadCount; t++)
{
int start = t * each;
int end = start + each;
if (t == threadCount - 1)
end += last;
threads[t] = new Thread((obj) =>
{
for (int i = start; i < end; i++)
{
for (int j = 0; j < length; j++)
{
matrix1[i, j] -= matrix2[i, j];
matrix1[i, j] *= number;
}
}
});
}
DateTime startTime = DateTime.Now;
for (int i = 0; i < threads.Length; i++)
threads[i].Start();
for (int i = 0; i < threads.Length; i++)
threads[i].Join();
elapsedTime = (DateTime.Now - startTime).TotalMilliseconds;
return matrix1;
}
static void Main()
{
int rows, cols;
rows = cols = 1000;
//Console.Write("Строки - ");
//var rows = int.Parse(Console.ReadLine());
//Console.Write("Столбцы - ");
//var cols = int.Parse(Console.ReadLine());
Console.Write("Число - ");
int number = int.Parse(Console.ReadLine());
//int number = new Random().Next();
//Console.Write("Потоки - ");
//var threads = int.Parse(Console.ReadLine());
int[,] matrix1 = new int[rows, cols];
int[,] matrix2 = new int[rows, cols];
GenerateMatrix(ref matrix1);
GenerateMatrix(ref matrix2);
ProcessMatrix(matrix1, matrix2, number, out double elapsedTime);
Console.WriteLine($"Последовательный метод: {elapsedTime} мс.");
for (int i = 1; i <= 8; i++)
{
ProcessMatrixParallel(matrix1, matrix2, number, i, out double elapsedTimeParallel);
Console.WriteLine($"Параллельный метод ({i} п.): {elapsedTimeParallel} мс.");
}
#if RELEASE
Console.ReadLine();
#endif
}
}
}