如何在c#中测量并行任务或多线程程序的总执行时间?
我是C#/.NET的新手。在这里,我尝试运行以下并行任务并测量总执行时间 但是在运行代码之后,执行时间显示为>6毫秒,这比预期的要短得多。我不确定Stopwatch()函数是否有任何错位,从而导致了这个意外的结果 我们将感谢您的帮助:如何在c#中测量并行任务或多线程程序的总执行时间?,c#,.net,task-parallel-library,stopwatch,execution-time,C#,.net,Task Parallel Library,Stopwatch,Execution Time,我是C#/.NET的新手。在这里,我尝试运行以下并行任务并测量总执行时间 但是在运行代码之后,执行时间显示为>6毫秒,这比预期的要短得多。我不确定Stopwatch()函数是否有任何错位,从而导致了这个意外的结果 我们将感谢您的帮助: namespace Tests { class Prod { static void Main(string[] args) { Stopwatch s = new Stopwatch();
namespace Tests
{
class Prod
{
static void Main(string[] args)
{
Stopwatch s = new Stopwatch();
s.Start();
{
Task T1 = Task.Run(() =>
{
for (int i = 0; i <= 5000; i++)
Console.WriteLine("Test1:" + i);
});
Task T2 = Task.Run(() =>
{
for (int i = 0; i <= 5000; i++)
Console.WriteLine("Test2:" + i);
});
Task T3 = Task.Run(() =>
{
for (int i = 0; i <= 5000; i++)
Console.WriteLine("Test3:" + i);
});
}
s.Stop();
Console.WriteLine("Press any key to quit");
Console.ReadKey();
Console.WriteLine("Total Task Ellapsed time -> {0}", s.ElapsedMilliseconds);
}
}
}
命名空间测试
{
类产品
{
静态void Main(字符串[]参数)
{
秒表s=新秒表();
s、 Start();
{
任务T1=任务。运行(()=>
{
对于(int i=0;i
{
对于(int i=0;i
{
对于(int i=0;i您需要在秒表停止前进行一次检查(s.stop()
)
例如:
Task.WaitAll(T1,T2,T3);
s.Stop();
一种解决方案是等待所有任务使用
完整代码
Stopwatch s = new Stopwatch();
s.Start();
{
Task T1 = Task.Run(() =>
{
for (int i = 0; i <= 5000; i++)
Console.WriteLine("Test1:" + i);
});
Task T2 = Task.Run(() =>
{
for (int i = 0; i <= 5000; i++)
Console.WriteLine("Test2:" + i);
});
Task T3 = Task.Run(() =>
{
for (int i = 0; i <= 5000; i++)
Console.WriteLine("Test3:" + i);
});
Task.WaitAll(T1,T2,T3); // Change here
}
s.Stop();
Console.WriteLine("Press any key to quit");
Console.WriteLine("Total Task Ellapsed time -> {0}", s.ElapsedMilliseconds);
stopwatchs=新秒表();
s、 Start();
{
任务T1=任务。运行(()=>
{
对于(int i=0;i
{
对于(int i=0;i
{
对于(int i=0;i)您可以使用WaitAll来等待所有任务完成。Task.WaitAll(T1、T2、T3);
Stopwatch s = new Stopwatch();
s.Start();
{
Task T1 = Task.Run(() =>
{
for (int i = 0; i <= 5000; i++)
Console.WriteLine("Test1:" + i);
});
Task T2 = Task.Run(() =>
{
for (int i = 0; i <= 5000; i++)
Console.WriteLine("Test2:" + i);
});
Task T3 = Task.Run(() =>
{
for (int i = 0; i <= 5000; i++)
Console.WriteLine("Test3:" + i);
});
Task.WaitAll(T1,T2,T3); // Change here
}
s.Stop();
Console.WriteLine("Press any key to quit");
Console.WriteLine("Total Task Ellapsed time -> {0}", s.ElapsedMilliseconds);