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

 更新时间:2022年04月18日 14:10:46   作者:農碼一生  
这篇文章介绍了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

运行结果:

到此这篇关于Parallel.For循环与普通for循环比较的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#创建Windows服务的图文教程

    C#创建Windows服务的图文教程

    本文主要介绍了C#创建Windows服务的图文教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 在WPF中使用Interaction.Triggers

    在WPF中使用Interaction.Triggers

    这篇文章介绍了在WPF中使用Interaction.Triggers的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • c#数据绑定之数据转化为信息的示例

    c#数据绑定之数据转化为信息的示例

    这篇文章主要介绍了c#数据绑定中的数据转化为信息的示例,需要的朋友可以参考下
    2014-04-04
  • 快速学习c# 枚举

    快速学习c# 枚举

    这篇文章主要介绍了c# 枚举的相关知识,文中讲解非常细致,示例代码帮助大家学习,感兴趣的朋友可以了解下
    2020-06-06
  • C# [ImportDll()] 知识小结

    C# [ImportDll()] 知识小结

    今天小编就为大家分享一篇关于C# [ImportDll()] 知识小结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 深入c#工厂模式的详解

    深入c#工厂模式的详解

    本篇文章是对c#中的工厂模式进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#缓存之SqlCacheDependency用法实例总结

    C#缓存之SqlCacheDependency用法实例总结

    这篇文章主要介绍了C#缓存之SqlCacheDependency用法,在C#程序设计中有一定的实用价值,需要的朋友可以参考下
    2014-08-08
  • C#中正则表达式的3种匹配模式

    C#中正则表达式的3种匹配模式

    本文主要介绍在C#中正则匹配的三种模式:单行模式(Singleline)、多行模式(Multiline)与忽略大小写(IgnoreCase),希望能帮到大家。
    2016-05-05
  • 基于C#编写一个修改文件时间属性的小工具

    基于C#编写一个修改文件时间属性的小工具

    这篇文章主要为大家详细介绍了如何基于C#编写一个修改文件时间属性的小工具,可以批量修改文件的创建时间、最后访问时间和最后修改时间,需要的可以参考下
    2024-11-11
  • 汉字转拼音缩写示例代码(Silverlight和.NET 将汉字转换成为拼音)

    汉字转拼音缩写示例代码(Silverlight和.NET 将汉字转换成为拼音)

    本篇文章主要介绍了汉字转拼音缩写示例代码(Silverlight和.NET 将汉字转换成为拼音) 需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01

最新评论