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开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    oracle数据库性能优化 降低IO
    用bat文件设置程序启动环境
    我的go语言上机测试代码
    解决golang.org不能访问的问题
    go语言 windows 32位编译环境搭建
    JQueryEasyUI学习笔记(十一)datagrid 右键菜单,冻结列
    JQueryEasyUI学习笔记(十二)datagrid 提示、格式化表格、表格按钮(附源码)
    JQueryEasyUI学习笔记(十四)tree
    JQueryEasyUI学习笔记(十三) 更换主题皮肤
    JQueryEasyUI学习笔记(七)datagrid
  • 原文地址:https://www.cnblogs.com/wml-it/p/14798391.html
Copyright © 2011-2022 走看看