Определить время выполнения программы - C#

Узнай цену своей работы

Формулировка задачи:

Вот задание
Ско-ко времени будет выполняться при обработке программа выполняющая два фрагмента кода в разных потоках; три фрагмента в разных потоках и т.д., до N+1. Потоки при этом создавайте с использованием лямбда-выражений. Необходимо заблокировать выполнение основного процесса до завершения работы всех потоков.
Вот написал код
using System;
using System.Threading;
 
namespace ConsoleApplication1
{
    class Program
    {
        private static void Main(string[] args)
        {
            char[] abc = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'I'};
 
            Console.Write("Enter count of core = ");
            int n = int.Parse(Console.ReadLine());
  
            for (var i = 0; i < n; i++)
            {
                int j = 0;
                Console.WriteLine("count of core : " + (i+1));

                while (j <= i)
                {
                    var t = new Thread(() =>
                    {
    // начало фрагмента кода
                        DateTime t1 = DateTime.Now;
                        double x = 12345.6789;
                        for (int l = 0; l < 10000; l++)
                            for (int m = 0; m < 10000; m++)
                            {
                                x = Math.Sqrt(x);
                                x = x + 0.000000001;
                                x = Math.Pow(x, 2);
                            }
                        Console.WriteLine(abc[j] + ": " + x);
                        DateTime t2 = DateTime.Now;
                        Console.WriteLine(t2 - t1);
    // end
                         
                    }
                    
                    );
                    t.Start();
                    
                    j++;
                }
                      
            }
            Console.Read();
            Console.WriteLine("press any key");
            Console.ReadKey();
        }
       
    }
}
но он не так работает надо что бы выводил Count of core : 2 A =... время B = время- Сейчас выводит Count of core : 2 С = .. время С =... время

Решение задачи: «Определить время выполнения программы»

textual
Листинг программы
using System;
using System.Diagnostics;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
        private static void Main(string[] args)
        {
            char[] abc = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'I' };
 
            Console.Write("Enter count of core = ");
            var tasks = new Task[int.Parse(Console.ReadLine())];
 
            for (var i = 0; i < tasks.Length; i++)
            {
                int j = i;
                tasks[i] = Task.Run(() =>
                                    {
                                        var sw = Stopwatch.StartNew();
                                        double x = 12345.6789;
                                        for (int l = 0; l < 100; l++)
                                            for (int m = 0; m < 100; m++)
                                            {
                                                x = Math.Sqrt(x);
                                                x = x + 0.000000001;
                                                x = Math.Pow(x, 2);
                                            }
                                        sw.Stop();
                                        Console.WriteLine("{0} : {1}\r\n{2}", abc[j], x, sw.Elapsed);
                                    });
            }
            Task.WaitAll(tasks);
            Console.WriteLine("press any key");
            Console.ReadKey();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы