zoukankan      html  css  js  c++  java
  • Parallel.For循环与普通的for循环的比较

    Parallel.For循环与普通的for循环的比较

    一、Parallel.For循环优于For的情况

    代码:

     #region Parallel.For
            public static void ParallelForTest()
            {
                //标准For
                var dt = DateTime.Now;
                var rand = new Random(DateTime.Now.Millisecond);
                for (int i = 0; i < 20; i++)
                {
                    Thread.Sleep(rand.Next(100, 1000));
                }
                var standerTime = (DateTime.Now - dt).TotalMilliseconds;
                Console.WriteLine("標準的for循環,耗時{0}毫秒", standerTime);
    
                //並行For
                dt = DateTime.Now;
                Parallel.For(0, 20, i =>
                {
                    Thread.Sleep(rand.Next(100, 1000));
                });
                var parallelTime = (DateTime.Now - dt).TotalMilliseconds;
                Console.WriteLine("并行的for循環,耗時{0}毫秒", parallelTime);
                Console.WriteLine();
                if (standerTime <= parallelTime)
                {
                    Console.WriteLine("----------标准的for循環節省{0}毫秒----------", (parallelTime - standerTime));
                }
                else
                {
                    Console.WriteLine("----------并行的for循環節省{0}毫秒----------", (standerTime - parallelTime));
                }
                Console.ReadKey();
            }
    
            #endregion

    运行结果:

     

    二、For循环优于Parallel.For的情况

    代码:

      #region For
            public static void ForTest()
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                Console.WriteLine("Parallel.For");
                ParallelLoopResult result =
                Parallel.For(0, 10000, i =>
                {
                    //打印空
                    Console.Write("");
    
                });
                sw.Stop();
                TimeSpan ts2 = sw.Elapsed;
                Console.WriteLine("Parallel.For總共花費{0}ms.", ts2.TotalMilliseconds);
    
                //簡單的For循環
                Stopwatch sw_Eq = new Stopwatch();
                sw_Eq.Start();
                Console.WriteLine("For");
                for (int i = 0; i < 10000; i++)
                {
                    //打印空
                    Console.Write("");
                }
                sw_Eq.Stop();
                TimeSpan tssw_Eq = sw_Eq.Elapsed;
                Console.WriteLine("for總共花費{0}ms.", tssw_Eq.TotalMilliseconds);
                Console.ReadKey();
            }
            #endregion

    运行结果:

     


    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
    JQUERY UI Datepicker Demo
    Official online document, install svn server in centOS
    JAVE not work in linux
    AMR 转mp3 失败
    XD, XR, DR 股票
    Linux 下MySql 重置密码
    Difinition Of Done
    Apache, Tomcat, JK Configuration Example
    Linux 安装tomcat
  • 原文地址:https://www.cnblogs.com/wml-it/p/14798391.html
Copyright © 2011-2022 走看看