Определить время выполнения программы - C#
Формулировка задачи:
Вот задание
Вот написал код
но он не так работает
надо что бы выводил
Count of core : 2
A =...
время
B =
время-
Сейчас выводит
Count of core : 2
С = ..
время
С =...
время
Ско-ко времени будет выполняться при обработке программа выполняющая два фрагмента кода в разных потоках; три фрагмента в разных потоках и т.д., до 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();
}
}
}Решение задачи: «Определить время выполнения программы»
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();
}
}
}