Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#中测量并行任务或多线程程序的总执行时间?_C#_.net_Task Parallel Library_Stopwatch_Execution Time - Fatal编程技术网

如何在c#中测量并行任务或多线程程序的总执行时间?

如何在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();

我是C#/.NET的新手。在这里,我尝试运行以下并行任务并测量总执行时间

但是在运行代码之后,执行时间显示为>6毫秒,这比预期的要短得多。我不确定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);