Пример #1
0
        /// <summary>
        /// 3. Тестирование класса SparseMatrixRepSeq
        /// </summary>
        private static async Task CreateSparceMatrixRepSeqWith0Elements()
        {
            using (SparseMatrixRepSeq sparseMatrixRepSeq = new SparseMatrixRepSeq("3"))
            {
                Console.WriteLine(sparseMatrixRepSeq.ToString());
                Console.WriteLine(sparseMatrixRepSeq.GetPathToDescriptionFile);
                Console.WriteLine(sparseMatrixRepSeq.GetPathToDataFile);
                Console.WriteLine(sparseMatrixRepSeq.GetPathToRowIndexFile);
                Console.WriteLine(sparseMatrixRepSeq.GetPathToColIndexFile);

                // 0. Очистка матрицы
                Console.WriteLine("0. Очистка матрицы");
                await sparseMatrixRepSeq.ClearAsync();

                await sparseMatrixRepSeq.PrintMatrixDescription();

                Console.WriteLine();

                #region Добавление отдельных строк

                // Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                Console.WriteLine("Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |");
                // Добавление строки index:              0    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
                //                   value:              0    | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();

                // Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                Console.WriteLine("Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |");
                // Добавление строки index:              0    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
                //                   value:              0    | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();

                // Добавление строки  | 0.11 | 1.11 | 2.22 | 0 | 0 | -5.55 | 0 | 0 | -8.88 | -9.99 |
                Console.WriteLine("1. Добавление строки  | 0.11 | 1.11 | 2.22 | 0 | 0 | -5.55 | 0 | 0 | -8.88 | -9.99 |");
                // Добавление строки index:              0    | 1    | 2    | 3 | 4 |  5    | 6 | 7 |  8    |  9    |
                //                   value:              0.11 | 1.11 | 2.22 | 0 | 0 | -5.55 | 0 | 0 | -8.88 | -9.99 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0.11, 1.11, 2.22, 0, 0, -5.55, 0, 0, -8.88, -9.99 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();

                // Добавление строки  | 0 | 0 | 2.55 | 0 | -1000 | 0 | 50.0001 | 0 | 0 | 0 |
                Console.WriteLine("Добавление строки  | 0 | 0 | 2.55 | 0 | -1000 | 0 | 50.01 | 0 | 0 | 0 |");
                // Добавление строки index:              0    | 1    | 2    | 3 | 4     | 5   |       6 | 7 | 8 | 9 |
                //                   value:              0    | 0    | 2.55 | 0 | -1000 | 0   | 50.01 | 0 | 0 | 0 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 0, 2.55, 0, -1000, 0, 50.01, 0, 0, 0 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();

                // Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                Console.WriteLine("Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |");
                // Добавление строки index:              0    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
                //                   value:              0    | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();


                // Добавление строки  | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
                Console.WriteLine("Добавление строки  | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |");
                // Добавление строки index:              | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
                //                   value:              | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();

                sWatch.Start();
                int N = 100;
                for (int i = 0; i < N; i++)
                {
                    await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
                }
                sWatch.Stop();
                Console.WriteLine($"Время добавления {N} строк с 10 ненулевыми элементами: { sWatch.ElapsedMilliseconds.ToString()} мс");

                sWatch.Start();
                N = 100;
                for (int i = 0; i < N; i++)
                {
                    await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 });
                }
                sWatch.Stop();
                Console.WriteLine($"Время добавления {N} строк с 20 ненулевыми элементами: { sWatch.ElapsedMilliseconds.ToString()} мс");

                sWatch.Restart();
                N = 1000;
                for (int i = 0; i < N; i++)
                {
                    await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 });
                }
                sWatch.Stop();
                Console.WriteLine($"Время добавления {N} строк: { sWatch.ElapsedMilliseconds.ToString()} мс");
                #endregion
            }
        }