예제 #1
0
        /// <summary>
        /// Метод сравнивающий быстродействия последовательного и
        /// параллельного умножения матриц
        /// </summary>
        /// <param name="n1">количество строк первой матрицы</param>
        /// <param name="m1">количество столбцов первой матрицы</param>
        /// <param name="n2">количество строк второй матрицы</param>
        /// <param name="m2">количество столбцов второй матрицы</param>
        public static void MatrixMultiplication(int n1, int m1, int n2, int m2)
        {
            var a = createRandomMatrix(n1, m1);
            var b = createRandomMatrix(n2, m2);
            var c = (double[, ])a.Clone();
            var d = (double[, ])b.Clone();

            var t1 = new Thread(() => {
                var st = new Stopwatch();
                st.Reset();
                st.Start();
                Operation.Times(a, b);
                st.Stop();
                Console.WriteLine($"\nSequentional Matrix Multiplication calculation\n" +
                                  $"Timestamp: {st.ElapsedMilliseconds} ms.\n");
                st.Reset();
            });
            var t2 = new Thread(() => {
                var st = new Stopwatch();
                st.Reset();
                st.Start();
                ParallelOperation.Times(c, d);
                st.Stop();
                Console.WriteLine($"\nParallel Matrix Multiplication calculation\n" +
                                  $"Timestamp: {st.ElapsedMilliseconds} ms.\n");
                st.Reset();
            });

            t1.Start();
            t2.Start();
            t1.Join();
            t2.Join();
        }
예제 #2
0
        /// <summary>
        /// Метод сравнивающий быстродействия последовательного и
        /// параллельного умножения матрицы на скаляр
        /// </summary>
        /// <param name="n">количество строк матрицы</param>
        /// <param name="m">количество столбцов матрицы</param>
        /// <param name="scalar">скаляр</param>
        public static void MatrixScalarMultiplicationTest(int n, int m, double scalar)
        {
            var matrix = createRandomMatrix(n, m);
            var t1     = new Thread(() => {
                var st = new Stopwatch();
                st.Reset();
                st.Start();
                Operation.Times(matrix, scalar);
                st.Stop();
                Console.WriteLine($"\nSequentional Matrix-Scalar Multiplication calculation\n" +
                                  $"Timestamp: {st.ElapsedMilliseconds} ms.\n");
                st.Reset();
            });
            var t2 = new Thread(() => {
                var st = new Stopwatch();
                st.Reset();
                st.Start();
                ParallelOperation.Times(matrix, scalar);
                st.Stop();
                Console.WriteLine($"\nParallel Matrix-Scalar Multiplication calculation\n" +
                                  $"Timestamp: {st.ElapsedMilliseconds} ms.\n");
                st.Reset();
            });

            t1.Start();
            t2.Start();
            t1.Join();
            t2.Join();
        }