/// <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 } }