Example #1
0
        public void MatrixTransp()
        {
            MathFuncsMatrix    mymatr1 = new MathFuncsMatrix();
            MathFuncsMatrixSeq mymatr2 = new MathFuncsMatrixSeq();
            int N = 1000;
            int M = 500;

            double[] a = new double[N * M];
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    a[i * M + j] = i + j;
                }
            }

            Stopwatch sw1 = new Stopwatch();

            sw1.Start();
            mymatr1.Transp(a, N, M);
            sw1.Stop();
            double secPar = sw1.ElapsedMilliseconds / 1000.0;


            Stopwatch sw2 = new Stopwatch();

            sw2.Start();
            mymatr2.Transp(a, N, M);
            sw2.Stop();
            double secSeq = sw2.ElapsedMilliseconds / 1000.0;

            Assert.IsTrue(secPar < secSeq, "последовательный вариант быстрее!");
        }
Example #2
0
        public void MatrixMult()
        {
            MathFuncsMatrix    mymatr1 = new MathFuncsMatrix();
            MathFuncsMatrixSeq mymatr2 = new MathFuncsMatrixSeq();

            int M = 1000;
            int N = 2000;
            int Q = 100;
            var A = new double[M * N];
            var B = new double[N * Q];

            for (int i = 0; i < M; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    A[i * N + j] = i + j;
                }
            }

            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < Q; j++)
                {
                    B[i * Q + j] = j * 3.1;
                }
            }

            Stopwatch sw1 = new Stopwatch();

            sw1.Start();
            mymatr1.Mult(A, B, M, N, Q);
            sw1.Stop();
            double secPar = sw1.ElapsedMilliseconds / 1000.0;


            Stopwatch sw2 = new Stopwatch();

            sw2.Start();
            mymatr2.Mult(A, B, M, N, Q);
            sw2.Stop();
            double secSeq = sw2.ElapsedMilliseconds / 1000.0;

            Assert.IsTrue(secPar < secSeq, "последовательный вариант быстрее!");
        }
Example #3
0
        public void MatrixVector()
        {
            MathFuncsMatrix    mymatr1 = new MathFuncsMatrix();
            MathFuncsMatrixSeq mymatr2 = new MathFuncsMatrixSeq();
            int N = 1000;
            int M = 500;

            double[] a = new double[M * N];
            double[] b = new double[N];
            for (int i = 0; i < M; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    a[i * N + j] = i + j;
                }
            }

            for (int j = 0; j < N; j++)
            {
                b[j] = j;
            }

            Stopwatch sw1 = new Stopwatch();

            sw1.Start();
            mymatr1.MultVector(a, b, M, N);
            sw1.Stop();
            double secPar = sw1.ElapsedMilliseconds / 1000.0;


            Stopwatch sw2 = new Stopwatch();

            sw2.Start();
            mymatr2.MultVector(a, b, M, N);
            sw2.Stop();
            double secSeq = sw2.ElapsedMilliseconds / 1000.0;

            Assert.IsTrue(secPar < secSeq, "последовательный вариант быстрее!");
        }